22 #ifndef CTKCMDLINEMODULEBACKENDFPTYPETRAITS_H 23 #define CTKCMDLINEMODULEBACKENDFPTYPETRAITS_H 26 namespace CmdLineModuleBackendFunctionPointer {
30 template<
bool flag,
typename T,
typename U>
36 template<
typename T,
typename U>
47 template<
class U>
struct PointerTraits
49 enum { result =
false };
52 template<
class U>
struct PointerTraits<U*>
54 enum { result =
true };
57 template<
class U>
struct ReferenceTraits
59 enum { result =
false };
62 template<
class U>
struct ReferenceTraits<U&>
64 enum { result =
true };
68 template<
class U>
struct UnConst
72 template<
class U>
struct UnConst<const U>
89 template<
bool C,
typename T =
void>
98 template<
typename,
typename>
110 template<
typename B,
typename D>
114 static char (&
Test(B*))[1];
115 static char (&
Test(...))[2];
125 #endif // CTKCMDLINEMODULEBACKENDFPTYPETRAITS_H
Select< isPointer, typename UnConst< PointeeType >::Result, typename Select< isReference, typename UnConst< ReferenceType >::Result, typename UnConst< T >::Result >::Result >::Result RawType
static char(& Test(B *))[1]
ReferenceTraits< T >::ReferenceType ReferenceType
PointerTraits< T >::PointeeType PointeeType