std::experimental::ranges:: WeaklyEqualityComparableWith
|
template
<
class
T,
class
U
>
concept
bool
WeaklyEqualityComparableWith
=
|
(范围 TS) | |
概念
WeaklyEqualityComparableWith<T, U>
规定类型
T
的对象和类型
U
的对象可以使用
==
和
!=
相互比较(以任意顺序),且比较结果具有一致性。更正式地说,仅当满足以下条件时
WeaklyEqualityComparableWith<T, U>
才被满足:
-
t,类型为 const std:: remove_reference_t < T > 的左值,以及 -
u,类型为 const std:: remove_reference_t < U > 的左值,
以下情况为真:
- t == u , u == t , t ! = u , u ! = t 具有相同的定义域;
- bool ( u == t ) == bool ( t == u ) ;
- bool ( t ! = u ) == ! bool ( t == u ) ;以及
- bool ( u ! = t ) == bool ( t ! = u ) 。
等值保持性
表达式若在给定相等输入时产生相等输出,则称其具有 等值保持性 。
- 表达式的输入由其操作数构成。
- 表达式的输出由其结果及所有被该表达式修改的操作数(如有)构成。
每个要求保持相等性的表达式还必须满足 稳定性 要求:对此类表达式进行两次求值时,若输入对象相同且期间未显式修改这些输入对象,则必须产生相等的输出结果。
除非另有说明,每个在 要求表达式 中使用的表达式都必须保持相等性且稳定,且该表达式的求值只能修改其非常量操作数。常量操作数不得被修改。
隐式表达式变体
一个使用对某个常量左值操作数进行非修改性表达式的 requires表达式 ,会隐式要求该表达式存在接受非常量左值或(可能为常量的)右值的附加变体,除非已通过具有不同语义的显式要求排除了这类表达式变体。这些 隐式表达式变体 必须满足声明表达式的相同语义要求。实现对这些变体语法验证的程度由实现定义。
另请参阅
|
指定
==
运算符为等价关系
(概念) |