Value concepts (details) ======================== .. contents:: Table of Contents :local: .. _concept-details-Value: Value ----- .. cpp:concept:: template Value #. Refines the :cpp:concept:`template SemiregularValue` concept. **Possible implementation** .. code:: cpp template concept Value = SemiregularValue; .. _concept-details-SemiregularValue: SemiregularValue ---------------- .. cpp:concept:: template SemiregularValue #. Refines the :cpp:concept:`template Semiregular` concept. **Notation** .. cpp:type:: SemiregValue .. cpp:var:: SemiregValue val .. cpp:var:: SemiregValue val_cpy .. cpp:var:: const SemiregValue cval **Valid Expressions** - :cpp:expr:`val()` returns an instance of :cpp:expr:`SemiregValue`. - :cpp:expr:`cval()` returns an instance of :cpp:expr:`const SemiregValue`. - :cpp:expr:`val_cpy(val)` returns an instance of :cpp:expr:`SemiregValue`. - :cpp:expr:`val_cpy(cval)` returns an instance of :cpp:expr:`SemiregValue`. - :cpp:expr:`val_cpy(move(val))` returns an instance of :cpp:expr:`SemiregValue`. - :cpp:expr:`val_cpy = val` returns an instance of :cpp:expr:`SemiregValue&`. - :cpp:expr:`val_cpy = cval` returns an instance of :cpp:expr:`SemiregValue&`. - :cpp:expr:`val_cpy = move(val)` returns an instance of :cpp:expr:`SemiregValue&`. **Possible implementation** .. code:: cpp template concept SemiregularValue = Semiregular; .. _concept-details-RegularValue: RegularValue ------------ .. cpp:concept:: template RegularValue #. Refines the :cpp:concept:`template SemiregularValue` concept. #. Refines the :cpp:concept:`template Regular` concept. **Notation** .. cpp:var:: const RegVal lhs .. cpp:var:: const RegVal rhs **Valid Expressions** - :cpp:expr:`lhs == rhs` return-type models :cpp:concept:`template Boolean`. - :cpp:expr:`lhs != rhs` return-type models :cpp:concept:`template Boolean`. - :cpp:expr:`rhs == lhs` return-type models :cpp:concept:`template Boolean`. - :cpp:expr:`rhs != lhs` return-type models :cpp:concept:`template Boolean`. **Possible implementation** .. code:: cpp template concept RegularValue = SemiregularValue && Regular; .. _concept-details-StrictTotallyOrderedRegularValue: StrictTotallyOrderedRegularValue -------------------------------- .. cpp:concept:: template StrictTotallyOrderedRegularValue #. Refines the :cpp:concept:`template RegularValue` concept. #. Refines the :cpp:concept:`template StrictTotallyOrdered` concept. **Notation** .. cpp:var:: const STORegVal lhs .. cpp:var:: const STORegVal rhs **Valid Expressions** - :cpp:expr:`lhs < rhs` return-type models :cpp:concept:`template Boolean`. - :cpp:expr:`lhs > rhs` return-type models :cpp:concept:`template Boolean`. - :cpp:expr:`lhs <= rhs` return-type models :cpp:concept:`template Boolean`. - :cpp:expr:`lhs >= rhs` return-type models :cpp:concept:`template Boolean`. **Possible implementation** .. code:: cpp template concept RegularValue = RegularValue && StrictTotallyOrdered;