std::reference_wrapper<T>::reference_wrapper
ja.cppreference.net より
template< class U >
reference_wrapper( U&& x ) noexcept(/*see below*/) ;
|
(1) | (C++11 から) (constexpr C++20 から) |
reference_wrapper( const reference_wrapper& other ) noexcept;
|
(2) | (C++11 から) (constexpr C++20 から) |
新しい参照ラッパーを構築します。
1)
x を T& に変換します(あたかも T& t = std::forward<U>(x); を用いたかのように)。次に、t への参照を格納します。このオーバーロードは、typename std::decay<U>::type が reference_wrapper と同じ型でなく、式 FUN(std::declval<U>()) が妥当である場合にのみ、オーバーロード解決に参加します。ここで 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 |
削除された
reference_wrapper(T&&)
コンストラクタが一部の場合において
オーバーロード解決を妨害する |
コンストラクタテンプレートで置き換え |