Namespaces
Variants

std::expected<T,E>:: emplace

From cppreference.net
Utilities library
Основной шаблон
template < class ... Args >
constexpr T & emplace ( Args && ... args ) noexcept ;
(1) (начиная с C++23)
template < class U, class ... Args >
constexpr T & emplace ( std:: initializer_list < U > il, Args && ... args ) noexcept ;
(2) (начиная с C++23)
void Частичная специализация
constexpr void emplace ( ) noexcept ;
(3) (начиная с C++23)

Создает ожидаемое значение на месте. После вызова has_value() возвращает true.

1) Уничтожает содержащееся значение, затем прямо инициализирует ожидаемое значение, содержащееся в * this с помощью std:: forward < Args > ( args ) ... .
Эта перегрузка участвует в разрешении перегрузки только если std:: is_nothrow_constructible_v < T, Args... > равно true .
2) Уничтожает содержащееся значение, затем прямо инициализирует ожидаемое значение, содержащееся в * this с помощью il и std:: forward < Args > ( args ) ... .
Эта перегрузка участвует в разрешении перегрузки только если std:: is_nothrow_constructible_v < T, std:: initializer_list < U > & , Args... > равно true .
3) Если * this содержит неожиданное значение, уничтожает это значение.

Содержание

Параметры

args - аргументы для передачи конструктору
il - список инициализации для передачи конструктору

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

2) * std:: construct_at ( std:: addressof ( val ) , il, std:: forward < Args > ( args ) ... )

Примечания

Если создание T потенциально может выбрасывать исключения, operator= может быть использован вместо этого.

Пример

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

присваивает содержимое
(public member function)