classhelpers.h File Reference

Detailed Description

Class helper macros and templates

Classes

class  NonEmptyDerived< B1, B2 >
 
class  NonEmptyDerived< B1, EmptyClass >
 
class  NonEmptyDerived< EmptyClass, B2 >
 
class  NonEmptyDerived< EmptyClass, EmptyClass >
 
struct  NonEmptyBasesHelper< BASES >
 
struct  NonEmptyBasesHelper< T1, REST... >
 
struct  NonEmptyBasesHelper<>
 
struct  TemplateInstantiation< TEMPLATE, ARGS >
 
struct  SubstituteType< T, MAP, typename >
 
struct  SubstituteType< T &, MAP, void >
 
struct  SubstituteType< T *, MAP, void >
 
struct  SubstituteType< const T, MAP, void >
 
struct  SubstituteType< T, MAP, typename SFINAEHelper< void, typename T::Instantiation >::type >
 

Namespaces

 maxon
 
 maxon::details
 

Macros

#define MAXON_SWITCH_FALLTHROUGH
 
#define MAXON_DISALLOW_COPY_AND_ASSIGN(TypeName)
 
#define MAXON_OPERATOR_MOVE_ASSIGNMENT(TypeName)
 
#define MAXON_OPERATOR_COPY_ASSIGNMENT(TypeName)
 
#define MAXON_OPERATOR_INEQUALITY(TypeName)
 
#define MAXON_OPERATOR_COMPARISON(TypeName)
 
#define PRIVATE_MAXON_MOVE_MEMBERS(x, i, a)
 
#define MAXON_MOVE_MEMBERS(...)
 
#define PRIVATE_MAXON_COPY_MEMBERS(x, i, a)
 
#define MAXON_COPY_MEMBERS(...)
 
#define PRIVATE_MAXON_COPYFROM_MEMBERS(x, i, a)
 
#define MAXON_COPYFROM_MEMBERS(...)
 
#define MAXON_OPERATOR_COPYFROM(T, ...)
 
#define PRIVATE_MAXON_HASHCODE1(m1)
 
#define PRIVATE_MAXON_HASHCODE2(m1, m2)
 
#define PRIVATE_MAXON_HASHCODE3(m1, m2, m3)
 
#define PRIVATE_MAXON_HASHCODE4(m1, m2, m3, m4)
 
#define PRIVATE_MAXON_HASHCODE5(m1, m2, m3, m4, m5)
 
#define PRIVATE_MAXON_HASHCODE6(m1, m2, m3, m4, m5, m6)
 
#define PRIVATE_MAXON_HASHCODE7(m1, m2, m3, m4, m5, m6, m7)
 
#define PRIVATE_MAXON_HASHCODE8(m1, m2, m3, m4, m5, m6, m7, m8)
 
#define PRIVATE_MAXON_HASHCODE9(m1, m2, m3, m4, m5, m6, m7, m8, m9)
 
#define PRIVATE_MAXON_HASHCODE10(m1, m2, m3, m4, m5, m6, m7, m8, m9, m10)
 
#define PRIVATE_MAXON_HASHCODE_C(count, ...)
 
#define PRIVATE_MAXON_HASHCODE_B(count, ...)
 
#define PRIVATE_MAXON_HASHCODE_A(count, ...)
 
#define MAXON_HASHCODE(...)
 
#define PRIVATE_MAXON_EQUALITY_OPERATORS(x, i, a)
 
#define MAXON_OPERATOR_EQUALITY(T, ...)
 
#define MAXON_OPERATOR_EQUALITY_HASHCODE(T, ...)
 
#define PRIVATE_MAXON_STRUCT_MEMBER_TOSTRING(x, i, a)
 
#define PRIVATE_MAXON_STRUCT_MEMBER_TYPE(x, i, a)
 
#define PRIVATE_MAXON_STRUCT_MEMBER_COPY(x, i, a)
 
#define MAXON_OPERATOR_STRUCT(T, ...)
 
#define MAXON_STRUCT_TUPLE(T, ...)
 
#define MAXON_NONCONST_COUNTERPART(...)
 
#define PRIVATE_MAXON_MEMBER_ACCESSORS_PARAMS(x, i, a)
 
#define PRIVATE_MAXON_MEMBER_ACCESSORS_ARGS(x, i, a)
 
#define MAXON_MEMBER_ACCESSORS(T, M, ...)
 
#define MAXON_DECLARE_CONDITIONAL_COPY_CONSTRUCTOR(cls, cond)
 
#define MAXON_DECLARE_CONDITIONAL_MOVE_CONSTRUCTOR(cls, cond)
 
#define MAXON_DECLARE_CONDITIONAL_COPY_ASSIGNMENT(cls, cond)
 
#define MAXON_DECLARE_CONDITIONAL_MOVE_ASSIGNMENT(cls, cond)
 

Typedefs

template<typename... BASES>
using NonEmptyBases = typename maxon::details::NonEmptyBasesHelper< typename std::conditional< std::is_empty< BASES >::value, EmptyClass, BASES >::type... >::type