Namespaces
Variants

std::experimental::optional<T>:: emplace

From cppreference.net
template < class ... Args >
void emplace ( Args && ... args ) ;
(библиотека fundamentals TS)
template < class U, class ... Args >
void emplace ( std:: initializer_list < U > ilist, Args && ... args ) ;
(библиотека fundamentals TS)

Создает содержащееся значение на месте. Если * this уже содержит значение до вызова, содержащееся значение уничтожается путем вызова его деструктора.

1) Инициализирует содержащееся значение с помощью прямой инициализации (но не прямой инициализации списком) с параметрами std:: forward < Args > ( args ) ... .
2) Инициализирует содержащееся значение путем вызова его конструктора с параметрами ilist, std:: forward < Args > ( args ) ... . Эта перегрузка участвует в разрешении перегрузки только если std:: is_constructible < T, std:: initializer_list < U > & , Args && ... > :: value равно true .

Содержание

Параметры

args... - аргументы для передачи конструктору
ilist - список инициализации для передачи конструктору
Требования к типам
-
T должен быть конструируемым из Args...
-
T должен быть конструируемым из std::initializer_list и Args...

Возвращаемое значение

(нет)

Исключения

Любое исключение, выброшенное выбранным конструктором T . Если исключение выбрасывается, * this не содержит значения после этого вызова (ранее содержавшееся значение, если оно было, было уничтожено).

Смотрите также

присваивает содержимое
(публичная функция-член)