# 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
< cpp‎ | utility

Defined in header `<utility>` |  |
struct in_place_t { explicit in_place_t() = default; }; inline constexpr in_place_t in_place{}; |  | (since C++17)
template <class T> struct in_place_type_t { explicit in_place_type_t() = default; }; template <class T> inline constexpr in_place_type_t<T> in_place_type{}; |  | (since C++17)
template < std::size_t I> struct in_place_index_t { explicit in_place_index_t() = default; }; template < std::size_t I> inline constexpr in_place_index_t<I> in_place_index{}; |  | (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

optional (C++17) | a wrapper that may or may not hold an object (class template)
variant (C++17) | a type-safe discriminated union (class template)
any (C++17) | Objects that hold instances of any CopyConstructible type. (class)

Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/utility/in_place&oldid=110913"