Value concepts (details)

Value

template<typename Val>
concept Value
  1. Refines the template <typename SemiregVal> SemiregularValue concept.

Possible implementation

template<typename Val>
concept Value = SemiregularValue<Val>;

SemiregularValue

template<typename SemiregVal>
concept SemiregularValue
  1. Refines the template <typename T> Semiregular concept.

Notation

type SemiregValue
SemiregValue val
SemiregValue val_cpy
const SemiregValue cval

Valid Expressions

Possible implementation

template<typename SemiregVal>
concept SemiregularValue = Semiregular<SemiregVal>;

RegularValue

template<typename RegVal>
concept RegularValue
  1. Refines the template <typename SemiregVal> SemiregularValue concept.
  2. Refines the template <typename T> Regular concept.

Notation

const RegVal lhs
const RegVal rhs

Valid Expressions

  • lhs == rhs return-type models template<typename B> Boolean.
  • lhs != rhs return-type models template<typename B> Boolean.
  • rhs == lhs return-type models template<typename B> Boolean.
  • rhs != lhs return-type models template<typename B> Boolean.

Possible implementation

template<typename RegVal>
concept RegularValue =  SemiregularValue<RegVal> &&
                        Regular<RegVal>;

StrictTotallyOrderedRegularValue

template<typename STORegVal>
concept StrictTotallyOrderedRegularValue
  1. Refines the template <typename RegVal> RegularValue concept.
  2. Refines the template <typename T> StrictTotallyOrdered concept.

Notation

const STORegVal lhs
const STORegVal rhs

Valid Expressions

  • lhs < rhs return-type models template<typename B> Boolean.
  • lhs > rhs return-type models template<typename B> Boolean.
  • lhs <= rhs return-type models template<typename B> Boolean.
  • lhs >= rhs return-type models template<typename B> Boolean.

Possible implementation

template<typename STORegVal>
concept RegularValue =  RegularValue<STORegVal> &&
                        StrictTotallyOrdered<STORegVal>;