muu/strong_typedef.h file

Contains the definition of muu::strong_typedef.

Namespaces

namespace muu
The root namespace for all muu functions and types.
namespace muu::strong_typedef_traits
CRTP-based 'mixin' traits for strong typedefs.

Classes

template <typename ValueType, typename Tag, template<typename> typename... Traits>
struct muu::strong_typedef
A utility class for creating 'strong typedefs'.
template <typename ValueType, typename Tag, template<typename> typename... Traits>
struct std::tuple_size<muu::strong_typedef<ValueType, Tag, Traits...>>
Specialization of std::tuple_size for muu::strong_typedef.
template <size_t Index, typename ValueType, typename Tag, template<typename> typename... Traits>
struct std::tuple_element<Index, muu::strong_typedef<ValueType, Tag, Traits...>>
Specialization of std::tuple_element for muu::strong_typedef.
template <typename ValueType, typename Tag, template<typename> typename... Traits>
struct std::hash<muu::strong_typedef<ValueType, Tag, Traits...>>
Specialization of std::hash for muu::strong_typedef.

Typedefs

using addable = /* ... */
Imbues a muu::strong_typedef with addition operators (x + x, +x)
using boolean = /* ... */
Imbues a muu::strong_typedef with explicit boolean conversion and unary logical not operator.
using callable = /* ... */
Imbues a muu::strong_typedef with function-call operator overloads (x()).
using comparable = /* ... */
Imbues a muu::strong_typedef with comparison operators (==, !=, <, <=, >, >=).
using decrementable = /* ... */
Imbues a muu::strong_typedef with pre- and post-decrement operators (--).
using incrementable = /* ... */
Imbues a muu::strong_typedef with pre- and post-increment operators (++).
using pointer_arithmetic = /* ... */
Imbues a muu::strong_typedef with pointer arithmetic operators.
using subtractable = /* ... */
Imbues a muu::strong_typedef with subtraction operators (x - x, -x)