Difference between revisions of "cpp/utility/in place"
From cppreference.com
Wilhelmtell (Talk | contribs) |
m (fmt) |
||
Line 1: | Line 1: | ||
− | {{cpp/title|in_place|in_place_type|in_place_index|in_place_t|in_place_type_t|in_place_index_t }} | + | {{cpp/title|in_place|in_place_type|in_place_index|in_place_t|in_place_type_t|in_place_index_t}} |
{{cpp/utility/navbar}} | {{cpp/utility/navbar}} | ||
{{dcl begin}} | {{dcl begin}} | ||
− | {{dcl header | utility}} | + | {{dcl header|utility}} |
− | {{dcl | since=c++17 | 1= | + | {{dcl|since=c++17|1= |
struct in_place_t { | struct in_place_t { | ||
explicit in_place_t() = default; | explicit in_place_t() = default; | ||
Line 9: | Line 9: | ||
inline constexpr in_place_t in_place{}; | inline constexpr in_place_t in_place{}; | ||
}} | }} | ||
− | {{dcl | since=c++17 | 1= | + | {{dcl|since=c++17|1= |
− | template <class T> struct in_place_type_t { | + | template< class T > |
+ | struct in_place_type_t { | ||
explicit in_place_type_t() = default; | explicit in_place_type_t() = default; | ||
}; | }; | ||
− | template <class T> | + | template< class T > |
inline constexpr in_place_type_t<T> in_place_type{}; | inline constexpr in_place_type_t<T> in_place_type{}; | ||
}} | }} | ||
− | {{dcl | since=c++17 |1= | + | {{dcl|since=c++17|1= |
− | template <std::size_t I> struct in_place_index_t { | + | template< std::size_t I > |
+ | struct in_place_index_t { | ||
explicit in_place_index_t() = default; | explicit in_place_index_t() = default; | ||
}; | }; | ||
− | template <std::size_t I> | + | template< std::size_t I > |
inline constexpr in_place_index_t<I> in_place_index{}; | inline constexpr in_place_index_t<I> in_place_index{}; | ||
}} | }} | ||
{{dcl end}} | {{dcl end}} | ||
− | {{tt|std::in_place}}, {{tt|std::in_place_type}}, and {{tt|std::in_place_index}} are disambiguation tags that can be passed to the constructors of {{lc|std::optional}}, {{lc|std::variant}}, and {{lc|std::any}} to indicate that the contained object should be constructed in-place, and (for the latter two) the type of the object to be constructed. | + | {{tt|std::in_place}}, {{tt|std::in_place_type}}, and {{tt|std::in_place_index}} are disambiguation tags that can be passed to the constructors of {{lc|std::optional}}, {{lc|std::variant}}, and {{lc|std::any}} 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 corresponding type/type templates {{tt|std::in_place_t}}, {{tt|std::in_place_type_t}} and {{tt|std::in_place_index_t}} can be used in the constructor's parameter list to match the intended tag. | The corresponding type/type templates {{tt|std::in_place_t}}, {{tt|std::in_place_type_t}} and {{tt|std::in_place_index_t}} can be used in the constructor's parameter list to match the intended tag. | ||
Line 31: | Line 33: | ||
===See also=== | ===See also=== | ||
{{dsc begin}} | {{dsc begin}} | ||
− | {{dsc inc | cpp/utility/dsc optional}} | + | {{dsc inc|cpp/utility/dsc optional}} |
− | {{dsc inc | cpp/utility/dsc variant}} | + | {{dsc inc|cpp/utility/dsc variant}} |
− | {{dsc inc | cpp/utility/dsc any}} | + | {{dsc inc|cpp/utility/dsc any}} |
{{dsc end}} | {{dsc end}} | ||
{{langlinks|ja|zh}} | {{langlinks|ja|zh}} |
Revision as of 13:43, 12 January 2023
Defined in header <utility>
|
||
struct in_place_t { explicit in_place_t() = default; |
(since C++17) | |
template< class T > struct in_place_type_t { |
(since C++17) | |
template< std::size_t I > struct in_place_index_t { |
(since C++17) | |
std::in_place
, std::in_place_type
, and std::in_place_index
are disambiguation tags that can be passed to the constructors of std::optional, std::variant, and std::any 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 corresponding 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.
See also
(C++17) |
a wrapper that may or may not hold an object (class template) |
(C++17) |
a type-safe discriminated union (class template) |
(C++17) |
objects that hold instances of any CopyConstructible type (class) |