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.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)
|
指示范围中的元素已排序且唯一
(标签) |
|
指示范围中的元素已排序(不要求唯一性)
(标签) |