std::any::any
提供: cppreference.com
<tbody>
</tbody>
constexpr any() noexcept; |
(1) | (C++17以上) |
any( const any& other ); |
(2) | (C++17以上) |
any( any&& other ) noexcept; |
(3) | (C++17以上) |
template< class ValueType > any( ValueType&& value ); |
(4) | (C++17以上) |
template< class ValueType, class... Args > explicit any( std::in_place_type_t<ValueType>, Args&&... args ); |
(5) | (C++17以上) |
template< class ValueType, class U, class... Args > explicit any( std::in_place_type_t<ValueType>, std::initializer_list<U> il, Args&&... args ); |
(6) | (C++17以上) |
新しい any オブジェクトを構築します。
1) 空のオブジェクトを構築します。
2-3) このコンストラクタを呼ぶまで
other が保持していた型および値と同等な内容を保持するように、 other の内容を新しいインスタンスにコピー (2) またはムーブ (3) します。 other が空であれば、空になります。 形式的には、2)
other が空であれば、構築されるオブジェクトは空です。 そうでなければ、 any(std::in_place_type<T>, std::any_cast<const T&>(other)) と同等です。 ただし T は other に格納されているオブジェクトの型です。3)
other が空であれば、構築されるオブジェクトは空です。 そうでなければ、構築されるオブジェクトは、 other に格納されているオブジェクトか、あるいは other に格納されているオブジェクト (右辺値とみなされます) から構築された同じ型のオブジェクトです。4)
std::forward<ValueType>(value) から 直接初期化された、 std::decay_t<ValueType> 型のオブジェクトを初期内容に持つオブジェクトを構築します。 std::is_copy_constructible<std::decay_t<ValueType>>::value が false の場合、プログラムは ill-formed です。 このオーバーロードは、std::decay_t<ValueType> が any と同じ型でなく、 std::in_place_type_t の特殊化でもなく、 std::is_copy_constructible_v<std::decay_t<ValueType>> が true である場合にのみ、オーバーロード解決に参加します。5)
std::forward<Args>(args)... から直接非リスト初期化された、 std::decay_t<ValueType> 型のオブジェクトを初期内容に持つオブジェクトを構築します。 このオーバーロードは、std::is_constructible_v<std::decay_t<ValueType>, Args...> と std::is_copy_constructible_v<std::decay_t<ValueType>> がどちらも true である場合にのみ、オーバーロード解決に参加します。6)
il, std::forward<Args>(args)... から直接非リスト初期化された、 std::decay_t<ValueType> 型のオブジェクトを初期内容に持つオブジェクトを構築します。 このオーバーロードは、std::is_constructible_v<std::decay_t<ValueType>, std::initializer_list<U>&, Args...> と std::is_copy_constructible_v<std::decay_t<ValueType>> がどちらも true である場合にのみ、オーバーロード解決に参加します。 テンプレート引数
| ValueType | - | 格納される値の型 |
| 型の要件 | ||
-std::decay_t<ValueType> は CopyConstructible の要件を満たさなければなりません。
| ||
引数
| other | - | コピーまたはムーブする別の any オブジェクト
|
| value | - | 格納される値を初期化するための値 |
| il, args | - | 格納される値のコンストラクタに渡される引数 |
例外
2,4,5,6) 格納される型のコンストラクタによって投げられるあらゆる例外を投げます。
ノート
デフォルトコンストラクタが constexpr であるため、 static な std::any は、いかなる動的非ローカル初期化が始まるよりも前に、静的非ローカル初期化の一部として初期化されます。 このため、 static オブジェクトのコンストラクタで std::any 型のオブジェクトを使用しても安全です。
関連項目
any オブジェクトを代入します (パブリックメンバ関数) |