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