std::experimental::ranges::EqualityComparable, std::experimental::ranges::EqualityComparableWith

来自cppreference.com
< cpp‎ | experimental‎ | ranges
 
 
实验性
技术规范
文件系统库(文件系统 TS)
库基础(库基础 TS)
库基础 2(库基础 TS v2)
库基础 3(库基础 TS v3)
并行扩展(并行 TS)
并行扩展 2(并行 TS v2)
并发扩展(并发 TS)
并发扩展 2(并发 TS v2)
概念(概念 TS)
范围(范围 TS)
反射(反射 TS)
数学特殊函数(特殊函数 TR)
实验性非 TS 功能特性
模式匹配
线性代数
std::execution
契约
2D 图形
 
 
概念库
核心语言概念
                              
对象概念
                              
                              
比较概念
EqualityComparableEqualityComparableWith
可调用概念
                                        
                              
URNG 概念
 
template<class T >
concept bool EqualityComparable = WeaklyEqualityComparableWith<T, T>;
(1) (范围 TS)
template<class T, class U >

concept bool EqualityComparableWith =
    EqualityComparable<T>&&
    EqualityComparable<U>&&
    CommonReference<
        conststd::remove_reference_t<T>&,
        conststd::remove_reference_t<U>&>&&
    EqualityComparable<
        ranges::common_reference_t<
            conststd::remove_reference_t<T>&,
            conststd::remove_reference_t<U>&>>&&

    WeaklyEqualityComparableWith<T, U>;
(2) (范围 TS)
1) 概念 EqualityComparable<T> 指定 T 上的比较运算符 ==!= 反应相等性: == 当且仅当其操作数相等时产出 true
EqualityComparable<T> 仅若符合下列条件才得到满足。给定 T 类型对象 ab,若且唯若 ab 相等 bool(a == b) 才为 true。伴随 a == b 保持相等性的要求,这蕴含 == 对称且传递,进而 == 对所有至少等于一个其他对象的对象 a 自反。
2) 概念 EqualityComparableWith<T, U> 指定(可能混合的)TU 操作数上的 ==!= 产出的结果与相等性一致。比较混合运算数生成的结果等价于比较转换到其共用类型的运算数。
正式而言,EqualityComparableWith<T, U> 仅若符合下列条件才得到满足。给定任何 conststd::remove_reference_t<T> 类型的左值 t 与任何 conststd::remove_reference_t<U> 类型的左值 u,并令 Cranges::common_reference_t<conststd::remove_reference_t<T>&, conststd::remove_reference_t<U>&>,有 bool(t == u)==bool(C(t)== C(u))

[编辑]相等性保持

若表达式对给定的相等输入产生相等输出,则它保持相等性

  • 表达式的输入由其操作数组成。
  • 表达式的输出由其结果和表达式所修改的所有操作数(若存在)组成。

每个要求保持相等性的表达式还进一步要求是稳定的:以相同输入对象对这种表达式进行两次求值必须拥有相等的输出,而无任何对这些输入对象的显式中间修改。

[编辑]隐式表达式变种

使用不修改某 const 左值操作数的表达式的 requires 表达式亦隐式要求该表达式的额外变种对给定操作数接受非 const 左值或(可为 const 的)右值,除非以有区别的语义显式要求这种表达式变种。这些隐式表达式变种必须符合与声明的表达式的相同的语义。不指定实现以何种程度校验变种的语法。

close