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 потенциально выбрасывает исключение, эта функция не определена. В этом случае пользователь обязан создать временный объект и выполнить перемещение или копирование.
Пример
См. также
| присваивает содержимое (публичный член-функция) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/utility/expected/emplace