3 #ifndef WIBBLE_SFINAE_H
4 #define WIBBLE_SFINAE_H
18 static const bool value =
false;
22 template<
typename A,
typename B >
24 static const bool value =
false;
27 template<
typename A >
32 template<
bool,
bool,
bool = true,
bool = true,
bool = true >
34 static const bool value =
false;
38 struct TAndC< true, true, true, true, true > {
42 template<
typename A,
typename B,
44 struct TAnd :
TAndC< A::value, B::value, C::value, D::value, E::value > {};
46 template<
bool,
bool,
bool = false,
bool = false,
bool = false >
52 struct TOrC< false, false, false, false, false > {
53 static const bool value =
false;
56 template<
typename A,
typename B,
58 struct TOr :
TOrC< A::value, B::value, C::value, D::value, E::value > {};
65 template<
bool a >
struct TNotC {
69 template<
typename T >
struct TNot :
TNotC< T::value > {};
71 template<
bool a,
bool b >
74 template<
typename A,
typename B >
77 template<
bool,
typename T = Unit >
80 template<
typename Type >
83 template<
bool,
typename T = Unit >
86 template<
typename Type >
89 template<
typename X,
typename T = Unit >
92 template<
typename X,
typename T = Unit >
95 template<
typename A,
typename B >
Type T
Definition: sfinae.h:87
Type T
Definition: sfinae.h:81
NotPreferred(Preferred)
Definition: sfinae.h:102
static const bool value
Definition: sfinae.h:34
static const bool value
Definition: sfinae.h:18
static const bool value
Definition: sfinae.h:66
static const bool value
Definition: sfinae.h:48
A First
Definition: sfinae.h:97
B Second
Definition: sfinae.h:98
static const bool value
Definition: sfinae.h:24
static const bool value
Definition: sfinae.h:14
bool operator==(Unit) const
Definition: sfinae.h:10
bool operator<(Unit) const
Definition: sfinae.h:9