Namespaces
Variants

std::experimental::ranges:: Relation

From cppreference.net
Défini dans l'en-tête <experimental/ranges/concepts>
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)

Le concept Relation<R, T, U> spécifie que R définit une relation binaire sur l'ensemble des expressions dont le type et la catégorie de valeur sont ceux encodés par soit T soit U .

Étant donné

  • r , une expression telle que decltype ( ( r ) ) soit R ,
  • t , une expression telle que decltype ( ( t ) ) soit T ,
  • u , une expression telle que decltype ( ( u ) ) soit U ,

et soit C le type ranges:: common_reference_t < const std:: remove_reference_t < T > & , const std:: remove_reference_t < U > & > ,

alors Relation<R, T, U> est satisfaite seulement si

  • bool ( r ( t, u ) ) == bool ( r ( C ( t ) , C ( u ) ) ) et
  • bool ( r ( u, t ) ) == bool ( r ( C ( u ) , C ( t ) ) ) .