std::basic_common_reference<std::reference_wrapper>
| ヘッダ <functional> で定義 |
||
template< class R, class T, template<class> RQual, template<class> TQual > |
(1) | (C++23から) |
| template< class T, class R, template<class> TQual, template<class> RQual > |
(2) | (C++23から) |
| ヘルパーコンセプト |
||
| template< class R, class T, class RQ, class TQ > concept /*ref-wrap-common-reference-exists-with*/ = |
(3) | (説明用*) |
reference_wrapper(Rで示される)と型 T の共通参照型(それぞれcv修飾子と参照修飾子(RQ および TQで示される)を適用)は、Rの基底型に左辺値参照とTQを適用した共通参照型に相当します。
共通参照型は、Rが唯一のreference_wrapperであり、Rの基底型に左辺値参照とTQを適用したものが共通参照型を持ち、かつRQがそれに変換可能である場合にのみ定義されます。
公開専用定数 /*is-ref-wrapper*/<R> は、Rが std::reference_wrapper の特殊化である場合に限り、 true になります。
目次 |
[編集] メンバー型
| メンバ型 | 定義 |
type
|
std::common_reference_t<typename R::type&, TQual<T>> (1,2) |
[編集] 注記
| 機能テストマクロ | 値 | 規格 | 機能 |
|---|---|---|---|
__cpp_lib_common_reference_wrapper |
202302L |
(C++23) | std::reference_wrapper の std::common_reference_t を参照型にする |
[編集] 例
#include <concepts> #include <functional> static_assert(std::same_as<std::common_reference_t<int&, std::reference_wrapper<int>>, int&>); static_assert(std::same_as<std::common_reference_t<std::reference_wrapper<int>&, int&>, int&>); static_assert(std::same_as<std::common_reference_t<int&, const std::reference_wrapper<int>&>, int&>); int main() {}
[編集] 関連項目
| 型のグループの共通の参照型を決定する (クラステンプレート) |