# 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

< cpp‎ | utility

定义于头文件 `<utility>` |  |
struct in_place_t { explicit in_place_t() = default; }; inline constexpr in_place_t in_place{}; |  | (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{}; |  | (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{}; |  | (C++17 起)

`std::in_place` 、 `std::in_place_type` 和 `std::in_place_index` 是消歧义标签，能传递给 std::optional 、 std::variant 和 std::any 的构造函数，以指示应该原位构造对象，以及（对于后二者）要构造的对象的类型。

对应的类型/类型模板 `std::in_place_t` 、 `std::in_place_type_t` 和 `std::in_place_index_t` 能用于构造函数的参数列表中，以匹配有意的标签。

### 参阅

optional (C++17) | 可能或可能不保有一个对象的包装器 (类模板)
variant (C++17) | 类型安全的可辨识联合体 (类模板)
any (C++17) | 可保有任何可复制构造 (CopyConstructible) 类型的实例的对象。 (类)