Spec-Zone.ru › C++

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

Основной шаблон
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 - список инициализации, передаваемый конструктору

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

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

Примечания

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

Пример

См. также

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

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/utility/expected/emplace

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API