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++23)
|
支持给定调用签名中限定符的任何可调用对象的仅移动包装器
(类模板) |
|
(C++17)
|
可能持有或可能不持有对象的包装器
(类模板) |
|
(C++17)
|
类型安全的可辨识联合体
(类模板) |
参见
|
(C++23)
|
指示范围中的元素已排序且唯一
(标签) |
|
指示范围中的元素已排序(不要求唯一性)
(标签) |