<tbody>
</tbody>
<tbody class="t-dcl-rev t-dcl-rev-num ">
</tbody><tbody>
</tbody>
<tbody class="t-dcl-rev t-dcl-rev-num ">
</tbody><tbody>
</tbody>
|
(1) |
|
| template< class U > reference_wrapper( U&& x ) noexcept(/*see below*/) ;
|
|
(C++20未満) |
| template< class U > constexpr reference_wrapper( U&& x ) noexcept(/*see below*/) ;
|
|
(C++20以上) |
|
(2) |
|
| reference_wrapper( const reference_wrapper& other ) noexcept;
|
|
(C++20未満) |
| constexpr reference_wrapper( const reference_wrapper& other ) noexcept;
|
|
(C++20以上) |
| | |
新しい参照ラッパーを構築します。
1) T& t = std::forward<U>(x); によって行われたかのように
x を
T& に変換し、そして
t への参照を格納します。 このオーバーロードは、
typename std::decay<U>::type が
reference_wrapper と同じ型でなく、式
FUN(std::declval<U>()) が well-formed である場合にのみ、オーバーロード解決に参加します。 ただし
FUN は以下のような架空の関数の集合を表します。
void FUN(T&) noexcept;
void FUN(T&&) = delete;
2) コピーコンストラクタ。 other.get() への参照を格納します。
引数
| x
|
-
|
ラップするオブジェクト
|
| other
|
-
|
別の参照ラッパー
|
例外
1) noexcept 指定:
noexcept(noexcept(FUN(std::declval<U>())))
ただし
FUN は上の説明で説明されている架空の関数の集合です。
Example
欠陥報告
以下の動作変更欠陥報告は以前に発行された C++ 標準に遡って適用されました。
| DR
|
適用先
|
発行時の動作
|
正しい動作
|
| LWG 2993
|
C++11
|
deleted reference_wrapper(T&&) constructor interferes with overload resolution in some cases
|
replaced with a constructor template
|