std::experimental::optional<T>:: optional
|
constexpr
optional
(
)
noexcept
;
constexpr optional ( std:: experimental :: nullopt_t ) noexcept ; |
(1) | (библиотека fundamentals TS) |
|
optional
(
const
optional
&
other
)
;
|
(2) | (библиотека fundamentals TS) |
|
optional
(
optional
&&
other
)
noexcept
(
/* см. ниже */
)
;
|
(3) | (библиотека fundamentals TS) |
|
constexpr
optional
(
const
T
&
value
)
;
|
(4) | (библиотека fundamentals TS) |
|
constexpr
optional
(
T
&&
value
)
;
|
(5) | (библиотека fundamentals TS) |
|
template
<
class
...
Args
>
constexpr explicit optional ( std:: experimental :: in_place_t , Args && ... args ) ; |
(6) | (библиотека fundamentals TS) |
|
template
<
class
U,
class
...
Args
>
constexpr
explicit
optional
(
std::
experimental
::
in_place_t
,
|
(7) | (библиотека fundamentals TS) |
Создает новый объект
optional
.
T
с выражением
*
other
. Если
other
не содержит значения, конструирует объект, который
не содержит значения
.
T
с выражением
std
::
move
(
*
other
)
и
не делает
other
пустым: перемещённый optional всё ещё
содержит значение
, но само значение перемещено. Если
other
не содержит значения, конструирует объект, который
не содержит значения
.
T
с выражением
value
. Этот конструктор является
constexpr
, если конструктор
T
, выбранный для прямой инициализации, является
constexpr
.
T
с выражением
std
::
move
(
value
)
. Этот конструктор является
constexpr
, если конструктор
T
, выбранный при прямой инициализации, является
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
должен удовлетворять требованиям
CopyConstructible
для использования перегрузок (2,4).
|
||
-
T
должен удовлетворять требованиям
MoveConstructible
для использования перегрузок (3,5).
|
||
Исключения
T
.
T
. Имеет следующую
noexcept
спецификацию:
T
.
Пример
#include <experimental/optional> #include <iostream> #include <string> int main() { std::experimental::optional<int> o1, // пустой o2 = 1, // инициализация из rvalue 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
(шаблон функции) |