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< 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 MAXON_HASHCODE(...)
 
#define PRIVATE_MAXON_EQUALITY_OPERATORS(x, i, a)
 
#define MAXON_OPERATOR_EQUALITY(T, ...)
 
#define PRIVATE_MAXON_SIZEOF(X, I, A)
 
#define PRIVATE_MAXON_IS_TRIVIALLY_HASHABLE(X, I, A)
 
#define MAXON_OPERATOR_HASH(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_REPLACEMENT(empty, BASES), EmptyClass, BASES >::type... >::type