```
template<class R, class T, class U>
concept StrictWeakOrder = Relation<R, T, U>;
```

The term
*strict*
refers to the
requirement of an irreflexive relation (!comp(x, x) for all x),
and the term
*weak*
to requirements that are not as strong as
those for a total ordering,
but stronger than those for a partial
ordering.

If we define
equiv(a, b)
as
!comp(a, b) && !comp(b, a),
then the requirements are that
comp
and
equiv
both be transitive relations:

- comp(a, b) && comp(b, c) implies comp(a, c)
- equiv(a, b) && equiv(b, c) implies equiv(a, c)