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
来自 cppreference.cn
在头文件 <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) |
保存任意 可复制构造 类型实例的对象 (类) |
(C++23) |
一个包装器,包含预期值或错误值 (类模板) |
(C++23) |
任何支持给定调用签名中限定符的可调用对象的仅移动包装器 (类模板) |
(C++17) |
可能包含或不包含对象的包装器 (类模板) |
(C++17) |
一种类型安全的带判别联合体 (类模板) |
[编辑] 另请参阅
(C++23) |
表示范围的元素已排序且唯一 (标签) |
表示范围的元素已排序(不要求唯一性) (标签) |