名前空間
変種
操作

std::reference_wrapper<T>::reference_wrapper

提供: cppreference.com
 
 
 
関数オブジェクト
関数ラッパー
(C++11)
(C++11)
関数の部分適用
(C++20)
(C++11)
関数呼び出し
(C++17)
恒等関数オブジェクト
(C++20)
参照ラッパー
(C++11)(C++11)
演算子ラッパー
否定子
(C++17)
検索子
制約付き比較子
古いバインダとアダプタ
(C++17未満)
(C++17未満)
(C++17未満)
(C++17未満)
(C++17未満)(C++17未満)(C++17未満)(C++17未満)
(C++20未満)
(C++20未満)
(C++17未満)(C++17未満)
(C++17未満)(C++17未満)

(C++17未満)
(C++17未満)(C++17未満)(C++17未満)(C++17未満)
(C++20未満)
(C++20未満)
 
 
template< class U >
reference_wrapper( U&& x ) noexcept(/*see below*/) ;
(1)
reference_wrapper( const reference_wrapper& other ) noexcept;
(2)

新しい参照ラッパーを構築します。

1) T& t = std::forward<U>(x); によって行われたかのように xT& に変換し、そして t への参照を格納します。 このオーバーロードは、typename std::decay<U>::typereference_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 は上の説明で説明されている架空の関数の集合です。

[編集] 欠陥報告

以下の動作変更欠陥報告は以前に発行された C++ 標準に遡って適用されました。

DR 適用先 発行時の動作 正しい動作
LWG 2993 C++11 deleted reference_wrapper(T&&) constructor interferes with overload resolution in some cases replaced with a constructor template