std::experimental::ranges:: ConvertibleTo
|
template
<
class
From,
class
To
>
concept
bool
ConvertibleTo
=
|
(ranges TS) | |
概念
ConvertibleTo
<
From, To
>
规定:由
From
指定的类型和值类别表达式,必须能隐式或显式转换为
To
类型,且两种转换形式应具有等价效果。
具体而言,
ConvertibleTo
<
From, To
>
仅在满足以下条件时成立:给定虚构函数
To test
(
From
(
&
f
)
(
)
)
{
return
f
(
)
;
}
及类型为
From
(
)
的函数
f
,且表达式
f
(
)
满足等值保持性(详见下文),
-
要么
-
To既不是对象类型也不是引用对象类型,或 -
static_cast
<
To
>
(
f
(
)
)
等于
test(f),且
-
-
以下条件之一成立:
-
From不是引用对象类型,或 -
From是对非 const 限定类型的右值引用,且在上述任一表达式执行后,由 f ( ) 所引用对象的结果状态有效但未指定;或 -
在上述任一表达式中均未修改由
f()所引用的对象。
-
在 ConvertibleTo < From, To > 与 std:: is_convertible < From, To > :: value 之间不需要存在任何包含关系。
等值保持性
表达式若在给定相等输入时产生相等输出,则称其具有 等值保持性 。
- 表达式的输入由其操作数构成。
- 表达式的输出由其结果及所有被该表达式修改的操作数(如有)构成。
每个要求保持相等性的表达式还必须满足 稳定性 要求:对此类表达式进行两次求值,若输入对象相同,则输出结果必须相等,除非其间显式修改了这些输入对象。
除非另有说明,每个在 要求表达式 中使用的表达式都必须保持相等性且稳定,且该表达式的求值仅可修改其非常量操作数。常量操作数不得被修改。
另请参阅
|
(C++11)
(C++20)
|
检查一个类型是否能转换为另一个类型
(类模板) |