Namespaces
Variants

std:: strict_weak_order

From cppreference.net
Défini dans l'en-tête <concepts>
template < class R, class T, class U >
concept strict_weak_order = std:: relation < R, T, U > ;
(depuis C++20)

Le concept strict_weak_order<R, T, U> spécifie que la relation R impose un ordre strict faible sur ses arguments.

Table des matières

Exigences sémantiques

Une relation r est un ordre strict faible si

  • elle est irréflexive : pour tout x , r ( x, x ) est false ;
  • elle est transitive : pour tous a , b et c , si r ( a, b ) et r ( b, c ) sont tous deux true alors r ( a, c ) est true ;
  • soit e ( a, b ) défini comme ! r ( a, b ) && ! r ( b, a ) , alors e est transitive : e ( a, b ) && e ( b, c ) implique e ( a, c ) .

Dans ces conditions, on peut montrer que e est une relation d'équivalence, et r induit un ordre total strict sur les classes d'équivalence déterminées par e .

Notes

La distinction entre relation et strict_weak_order est purement sémantique.

Références

  • Norme C++23 (ISO/CEI 14882:2024) :
  • 18.7.7 Concept strict_weak_order [concept.strictweakorder]
  • Norme C++20 (ISO/CEI 14882:2020) :
  • 18.7.7 Concept strict_weak_order [concept.strictweakorder]

Voir aussi