Sen API
Sen Libraries
Loading...
Searching...
No Matches
strong_type.h File Reference

Go to the source code of this file.

Classes

class  sen::StrongTypeBase< T >
 Wraps T to make it a strong type. More...
struct  sen::ShouldBePassedByValue< StrongTypeBase< T > >
class  sen::StrongType< T, D >
 CRTP class that wraps T to make it a strong type. More...
struct  sen::ShouldBePassedByValue< StrongType< T, D > >

Namespaces

namespace  sen

Macros

#define SEN_STRONG_TYPE(name, native_type)
 Helper macro to define strong types. NOLINTNEXTLINE.
#define SEN_STRONG_TYPE_HASHABLE(name)
 Makes your strong type std::hashable. NOLINTNEXTLINE.

Macro Definition Documentation

◆ SEN_STRONG_TYPE

#define SEN_STRONG_TYPE ( name,
native_type )
Value:
struct name: public ::sen::StrongType<native_type, name> \
{ \
using Base::Base; \
using Base::ValueType; \
};
CRTP class that wraps T to make it a strong type.
Definition strong_type.h:72

Helper macro to define strong types. NOLINTNEXTLINE.

◆ SEN_STRONG_TYPE_HASHABLE

#define SEN_STRONG_TYPE_HASHABLE ( name)
Value:
template <> \
struct std::hash<name> \
{ \
inline std::size_t operator()(const name& val) const noexcept { return std::hash<name::ValueType> {}(val.get()); } \
};

Makes your strong type std::hashable. NOLINTNEXTLINE.