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
Материал из ru.cppreference.net
| Определено в заголовке <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 >
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 >
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) являются тегами разрешения неоднозначности, которые можно передать конструкторам, чтобы указать, что содержащийся объект должен быть создан на месте, и (для двух последних) тип создаваемого объекта.Стандартная библиотека
Следующие типы стандартной библиотеки используют (1-6) в качестве тегов устранения неоднозначности:
|
(C++17)
|
объекты, содержащие экземпляры любого
CopyConstructible
типа
(класс) |
|
(C++23)
|
обёртка, содержащая либо ожидаемое, либо ошибочное значение
(шаблон класса) |
|
(C++23)
|
перемещаемая обёртка любого вызываемого объекта, поддерживающая квалификаторы в заданной сигнатуре вызова
(шаблон класса) |
|
(C++17)
|
обёртка, которая может содержать или не содержать объект
(шаблон класса) |
|
(C++17)
|
типобезопасное размеченное объединение
(шаблон класса) |
Смотрите также
|
(C++23)
|
указывает, что элементы диапазона отсортированы и уникальны
(тег) |
|
указывает, что элементы диапазона отсортированы (уникальность не требуется)
(тег) |