C++ concepts: Compare

The concept Compare is a set of requirements expected by some of the standard library facilities from the user-provided function object types.

The return value of the function call operation applied to an object of type Compare, when contextually converted to bool, yields true if the first argument of the call appears before the second in the strict weak ordering relationinduced by this Compare type, and false otherwise.

As with any BinaryPredicate, evaluation of that expression is not allowed to call non-const member functions of the dereferenced iterators.

Requirements

The type T satisfies Compare if

Given

  • comp, an object of type Compare
  • equiv(a, b), an expression equivalent to !comp(a, b) && !comp(b, a)

The following expressions must be valid and have their specified effects

Expression Return type Requirements
comp(a, b) implicitly convertible to bool Establishes strict weak ordering relation with the following properties
  • For all acomp(a,a)==false
  • If comp(a,b)==true then comp(b,a)==false
  • if comp(a,b)==true and comp(b,c)==true then comp(a,c)==true
equiv(a, b) bool Establishes equivalence relationship with the following properties
  • For all aequiv(a,a)==true.
  • If equiv(a,b)==true, then equiv(b,a)==true
  • If equiv(a,b)==true and equiv(b,c)==true, then equiv(a,c)==true

Note: comp induces a strict total ordering on the equivalence classes determined by equiv


posted @ 2014-10-18 00:08  zyh_think  阅读(321)  评论(0编辑  收藏  举报