Namespaces
Variants

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

来自 zh.cppreference.net
 
 
 
定义于头文件 <utility>
struct in_place_t { explicit in_place_t() = default; };
(1) (C++17 起)
inline constexpr std::in_place_t in_place {};
(2) (C++17 起)
template< class T >
struct in_place_type_t { explicit in_place_type_t() = default; };
(3) (C++17 起)
template< class T >
constexpr std::in_place_type_t<T> in_place_type {};
(4) (C++17 起)
template< std::size_t I >
struct in_place_index_t { explicit in_place_index_t() = default; };
(5) (C++17 起)
template< std::size_t I >
constexpr std::in_place_index_t<I> in_place_index {};
(6) (C++17 起)
1,3,5) 类型/类型模板 std::in_place_t、std::in_place_type_t 和 std::in_place_index_t 可用于构造函数的参数列表以匹配预期的标签。
2,4,6) 相应的 std::in_place、std::in_place_type 和 std::in_place_index 实例,即 (1,3,5) 是消除歧义的标签,可以传递给构造函数以指示应就地构造包含的对象,并且(对于后两者)还指示要构造的对象类型。

标准库

以下标准库类型使用 (1-6) 作为消歧义标签:

(C++17)
可容纳任何 CopyConstructible 类型实例的对象
(类)
(C++23)
包含期望值或错误值的包装器
(类模板)
支持给定调用签名中限定符的任何可调用对象的仅移动包装器
(类模板)
(C++17)
可能持有或可能不持有对象的包装器
(类模板)
(C++17)
类型安全的可辨识联合体
(类模板)

参见

指示范围中的元素已排序且唯一
(标签)
指示范围中的元素已排序(不要求唯一性)
(标签)