Namespaces
Variants

std::experimental::ranges:: Relation

From zh.cppreference.net
template < class R, class T, class U >

concept bool Relation =
Predicate < R, T, T > &&
Predicate < R, U, U > &&
CommonReference <
const std:: remove_reference_t < T > & ,
const std:: remove_reference_t < U > & > &&
Predicate < R,
ranges:: common_reference_t <
const std:: remove_reference_t < T > & ,
const std:: remove_reference_t < U > & > ,
ranges:: common_reference_t <
const std:: remove_reference_t < T > & ,
const std:: remove_reference_t < U > & >> &&
Predicate < R, T, U > &&

Predicate < R, U, T > ;
(1) (ranges TS)

概念 Relation<R, T, U> 规定 R 在类型和值类别由 T 或 U 编码的表达式集合上定义了一个二元关系。

给定

  • r ,一个表达式,使得 decltype ( ( r ) ) 为 R ,
  • t ,一个表达式,使得 decltype ( ( t ) ) 为 T ,
  • u ,一个表达式,使得 decltype ( ( u ) ) 为 U ,

并令 C 为 ranges:: common_reference_t < const std:: remove_reference_t < T > & , const std:: remove_reference_t < U > & > ,

当且仅当满足 Relation<R, T, U> 时

  • bool ( r ( t, u ) ) == bool ( r ( C ( t ) , C ( u ) ) ) 且
  • bool ( r ( u, t ) ) == bool ( r ( C ( u ) , C ( t ) ) ) 。