Spec-Zone.ru › C++

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

T is not cv void
template< class... Args >
constexpr T& emplace( Args&&... args ) noexcept;
(1) (since C++23)
template< class U, class... Args >
constexpr T& emplace( std::initializer_list<U>& il, Args&&... args ) noexcept;
(2) (since C++23)
T is cv void
constexpr void emplace() noexcept;
(3) (since C++23)

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

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

Параметры

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

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

Ссылка на новое содержащееся значение.

Исключения

noexcept спецификация:
noexcept

Примечания

Если построение T потенциально выбрасывает исключение, эта функция не определена. В этом случае пользователь обязан создать временный объект и выполнить перемещение или копирование.

Пример

См. также

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

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

Spec-Zone.ru

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