Spec-Zone.ru › C++

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 >
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) в качестве тегов для устранения неоднозначности:

any
(C++17)
объекты, хранящие экземпляры любого типа, удовлетворяющего требованиям CopyConstructible
(класс)
expected
(C++23)
обёртка, содержащая ожидаемое значение или значение ошибки
(шаблон класса)
move_only_function
(C++23)
обёртка, допускающая только перемещение, для любого вызываемого объекта, поддерживающего квалификаторы в заданной сигнатуре вызова
(шаблон класса)
optional
(C++17)
обёртка, которая может содержать объект или не содержать его
(шаблон класса)
variant
(C++17)
типобезопасное дискриминируемое объединение
(шаблон класса)

См. также

sorted_uniquesorted_unique_t
(C++23)
указывает, что элементы диапазона отсортированы и уникальны
(тег)
sorted_equivalentsorted_equivalent_t
(C++23)
указывает, что элементы диапазона отсортированы (уникальность не требуется)
(тег)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/utility/in_place

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API