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
From cppreference.com
Defined in header
<utility>
|
||
struct
in_place_t
{
explicit
in_place_t
(
)
=
default
;
}
;
|
(1) | (since C++17) |
inline
constexpr
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) |
1,3,5)
The type/type templates
std::in_place_t
,
std::in_place_type_t
and
std::in_place_index_t
can be used in the constructor's parameter list to match the intended tag.
2,4,6)
The corresponding
std::in_place
,
std::in_place_type
, and
std::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.
Standard library
The following standard library types use (1-6) as disambiguation tags:
(C++17)
|
objects that hold instances of any
CopyConstructible
type
(class) |
(C++23)
|
a wrapper that contains either an expected or error value
(class template) |
(C++23)
|
move-only wrapper of any callable object that supports qualifiers in a given call signature
(class template) |
(C++17)
|
a wrapper that may or may not hold an object
(class template) |
(C++17)
|
a type-safe discriminated union
(class template) |
See also
(C++23)
|
indicates that elements of a range are sorted and unique
(tag) |
indicates that elements of a range are sorted (uniqueness is not required)
(tag) |