std::in_place, std::in_place_type, std::in_place_index, std::in_place_t, std::in_place_type_t, std::in_place_index_t
Определено в заголовке <utility> | ||
|---|---|---|
struct in_place_t { explicit in_place_t() = default; };
| (1) | (с C++17) |
inline constexpr std::in_place_t in_place {};
| (2) | (с C++17) |
template< class T >
struct in_place_type_t { explicit in_place_type_t() = default; };
| (3) | (с C++17) |
template< class T >
inline constexpr std::in_place_type_t<T> in_place_type {};
| (4) | (с C++17) |
template< std::size_t I >
struct in_place_index_t { explicit in_place_index_t() = default; };
| (5) | (с C++17) |
template< std::size_t I >
inline constexpr std::in_place_index_t<I> in_place_index {};
| (6) | (с C++17) |
1,3,5) Шаблоны типов
std::in_place_t, std::in_place_type_t и std::in_place_index_t могут использоваться в списке параметров конструктора для соответствия ожидаемым тегам.
2,4,6) Соответствующие
std::in_place, std::in_place_type, и std::in_place_index экземпляры (1,3,5) являются тегами разбора, которые могут передаваться в конструкторы std::expected, std::optional, std::variant, и std::any для указания, что содержащийся объект должен быть создан в месте, а также (для двух последних) тип создаваемого объекта.См. также
|
(C++23) | оболочка, содержащая ожидаемое или ошибочное значение (шаблон класса) |
|
(C++17) | оболочка, которая может или не может содержать объект (шаблон класса) |
|
(C++17) | безопасный по типу объединение (шаблон класса) |
|
(C++17) | объекты, содержащие экземпляры любого CopyConstructible типа (класс) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/utility/in_place