std::experimental::optional<T>:: optional
constexpr
optional
(
)
noexcept
;
constexpr optional ( std:: experimental :: nullopt_t ) noexcept ; |
(1) | (library fundamentals TS) |
optional
(
const
optional
&
other
)
;
|
(2) | (library fundamentals TS) |
optional
(
optional
&&
other
)
noexcept
(
/* see below */
)
;
|
(3) | (library fundamentals TS) |
constexpr
optional
(
const
T
&
value
)
;
|
(4) | (library fundamentals TS) |
constexpr
optional
(
T
&&
value
)
;
|
(5) | (library fundamentals TS) |
template
<
class
...
Args
>
constexpr explicit optional ( std:: experimental :: in_place_t , Args && ... args ) ; |
(6) | (library fundamentals TS) |
template
<
class
U,
class
...
Args
>
constexpr
explicit
optional
(
std::
experimental
::
in_place_t
,
|
(7) | (library fundamentals TS) |
Constructs a new
optional
object.
T
with the expression
*
other
. If
other
does not contain a value, constructs an object that
does not contain a value
.
T
with the expression
std
::
move
(
*
other
)
and
does not
make
other
empty: a moved-from optional still
contains a value
, but the value itself is moved from. If
other
does not contain a value, constructs an object that
does not contain a value
.
T
with the expression
value
. This constructor is
constexpr
if the constructor of
T
selected by direct-initialization is
constexpr
.
T
with the expression
std
::
move
(
value
)
. This constructor is
constexpr
if the constructor of
T
selected by direct-initialization is
constexpr
.
T
from the arguments
std::
forward
<
Args
>
(
args
)
...
.
T
from the arguments
ilist,
std::
forward
<
Args
>
(
args
)
...
. The function does not participate in the overload resolution if
std::
is_constructible
<
T,
std::
initializer_list
<
U
>
&
, Args
&&
...
>
::
value
!
=
true
.
Parameters
other | - |
another
optional
object whose contained value to copy
|
value | - | value to initialize the contained value with |
args... | - | arguments to initialize the contained value with |
ilist | - | initializer list to initialize the contained value with |
Type requirements | ||
-
T
must meet the requirements of
CopyConstructible
in order to use overloads (2,4).
|
||
-
T
must meet the requirements of
MoveConstructible
in order to use overloads (3,5).
|
Exceptions
T
.
T
. Has the following
noexcept
declaration:
T
.
Example
#include <experimental/optional> #include <iostream> #include <string> int main() { std::experimental::optional<int> o1, // empty o2 = 1, // init from rvalue o3 = o2; // copy-constructor std::experimental::optional<std::string> o4(std::experimental::in_place, {'a', 'b', 'c'}); std::cout << *o2 << ' ' << *o3 << ' ' << *o4 << '\n'; }
Output:
1 1 abc
See also
creates an
optional
object
(function template) |