std::experimental::optional<T>:: optional
|
constexpr
optional
(
)
noexcept
;
constexpr optional ( std:: experimental :: nullopt_t ) noexcept ; |
(1) | (ライブラリ基盤 TS) |
|
optional
(
const
optional
&
other
)
;
|
(2) | (ライブラリ基盤 TS) |
|
optional
(
optional
&&
other
)
noexcept
(
/* 下記参照 */
)
;
|
(3) | (ライブラリ基盤 TS) |
|
constexpr
optional
(
const
T
&
value
)
;
|
(4) | (ライブラリ基盤 TS) |
|
constexpr
optional
(
T
&&
value
)
;
|
(5) | (ライブラリ基盤 TS) |
|
template
<
class
...
Args
>
constexpr explicit optional ( std:: experimental :: in_place_t , Args && ... args ) ; |
(6) | (ライブラリ基盤 TS) |
|
template
<
class
U,
class
...
Args
>
constexpr
explicit
optional
(
std::
experimental
::
in_place_t
,
|
(7) | (ライブラリ基盤 TS) |
新しい
optional
オブジェクトを構築します。
T
のオブジェクトを式
*
other
で初期化するように、保持する値を初期化する。
other
が値を保持していない場合、
値を保持しない
オブジェクトを構築する。
T
のオブジェクトを式
std
::
move
(
*
other
)
で初期化し、
かつ
other
を空に
しない
:ムーブされたoptionalは依然として
値を含む
が、値自体はムーブされている。
other
が値を含まない場合、
値を含まない
オブジェクトを構築する。
T
のオブジェクトを式
value
で初期化するかのように初期化されます。このコンストラクタは、direct-initializationによって選択された
T
のコンストラクタが
constexpr
の場合、
constexpr
となります。
T
のオブジェクトを式
std
::
move
(
value
)
で初期化するかのように初期化されます。このコンストラクタは、direct-initializationによって選択される
T
のコンストラクタが
constexpr
の場合、
constexpr
となります。
T
のオブジェクトを引数
std::
forward
<
Args
>
(
args
)
...
から初期化するかのように初期化されます。
T
型のオブジェクトを引数
ilist,
std::
forward
<
Args
>
(
args
)
...
から初期化したかのように初期化されます。この関数は、
std::
is_constructible
<
T,
std::
initializer_list
<
U
>
&
, Args
&&
...
>
::
value
!
=
true
の場合、オーバーロード解決に参加しません。
目次 |
パラメータ
| other | - |
コピーする対象の値を持つ別の
optional
オブジェクト
|
| value | - | 格納される値を初期化する値 |
| args... | - | 格納される値を初期化する引数 |
| ilist | - | 格納される値を初期化する初期化子リスト |
| 型要件 | ||
-
T
はオーバーロード(2,4)を使用するために
CopyConstructible
の要件を満たさなければならない
|
||
-
T
はオーバーロード(3,5)を使用するために
MoveConstructible
の要件を満たさなければならない
|
||
例外
T
のコンストラクタによってスローされるあらゆる例外をスローします。
T
のコンストラクタによってスローされるあらゆる例外をスローします。以下の
noexcept
宣言を持ちます:
T
のコンストラクタによってスローされるあらゆる例外をスローします。
例
#include <experimental/optional> #include <iostream> #include <string> int main() { std::experimental::optional<int> o1, // 空 o2 = 1, // 右辺値からの初期化 o3 = o2; // コピーコンストラクタ std::experimental::optional<std::string> o4(std::experimental::in_place, {'a', 'b', 'c'}); std::cout << *o2 << ' ' << *o3 << ' ' << *o4 << '\n'; }
出力:
1 1 abc
関連項目
optional
オブジェクトを作成する
(関数テンプレート) |