std::expected<T,E>::emplace
Материал из cppreference.com
<tbody>
</tbody>
| T не является cv void |
||
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) |
| T является cv void |
||
constexpr void emplace() noexcept; |
(3) | (начиная с C++23) |
Создаёт ожидаемое значение на месте. После вызова has_value() возвращает true.
1) Уничтожает содержащееся значение, затем инициализирует ожидаемое значение, содержащееся в
*this, как будто путём прямой инициализации объекта типа T из аргументов std::forward<Args>(args)....
Эта перегрузка участвует в разрешении перегрузки, только если std::is_nothrow_constructible_v<T, Args...> равно true.2) Уничтожает содержащееся значение, затем инициализирует ожидаемое значение, содержащееся в
*this, как будто путём прямой инициализации объекта типа 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 является потенциально генерирующей исключение, эта функция не определена. В этом случае ответственность за создание временного объекта и его перемещение или копирование лежит на пользователе.
Пример
| Этот раздел не завершён Причина: нет примера |
Смотрите также
| присваивает содержимое (public функция-элемент) |