|
|
Defined in header <utility> | ||
struct in_place_t{explicit in_place_t()=default;}; | (1) | (since C++17) |
inlineconstexpr std::in_place_t in_place{}; | (2) | (since C++17) |
template<class T> struct in_place_type_t{explicit in_place_type_t()=default;}; | (3) | (since C++17) |
template<class T> constexpr std::in_place_type_t<T> in_place_type{}; | (4) | (since C++17) |
template<std::size_t I> struct in_place_index_t{explicit in_place_index_t()=default;}; | (5) | (since C++17) |
template<std::size_t I> constexpr std::in_place_index_t<I> in_place_index{}; | (6) | (since C++17) |
std::in_place_t
,std::in_place_type_t
andstd::in_place_index_t
can be used in the constructor's parameter list to match the intended tag.std::in_place
,std::in_place_type
, andstd::in_place_index
instances of(1,3,5) are disambiguation tags that can be passed to the constructors to indicate that the contained object should be constructed in-place, and (for the latter two) the type of the object to be constructed.The following standard library types use(1-6) as disambiguation tags:
(C++17) | objects that hold instances of anyCopyConstructible type (class)[edit] |
(C++23) | a wrapper that contains either an expected or error value (class template)[edit] |
(C++23) | move-only wrapper of any callable object that supports qualifiers in a given call signature (class template)[edit] |
(C++17) | a wrapper that may or may not hold an object (class template)[edit] |
(C++17) | a type-safe discriminated union (class template)[edit] |
(C++23) | indicates that elements of a range are sorted and unique (tag)[edit] |
indicates that elements of a range are sorted (uniqueness is not required) (tag)[edit] |