14 #ifndef BOOST_CORE_ENABLE_IF_HPP
15 #define BOOST_CORE_ENABLE_IF_HPP
22 #ifndef BOOST_NO_SFINAE
26 template<
typename T,
typename R=
void>
32 template <
bool B,
class T =
void>
40 template <
class Cond,
class T =
void>
43 template <
bool B,
class T>
45 typedef typename T::type
type;
51 template <
class Cond,
class T>
55 template <
bool B,
class T =
void>
63 template <
class Cond,
class T =
void>
66 template <
bool B,
class T>
68 typedef typename T::type
type;
74 template <
class Cond,
class T>
83 namespace detail {
typedef void enable_if_default_T; }
86 struct enable_if_does_not_work_on_this_compiler;
88 template<
typename T,
typename R=
void>
89 struct enable_if_has_type : enable_if_does_not_work_on_this_compiler<T>
92 template <
bool B,
class T = detail::enable_if_default_T>
93 struct enable_if_c : enable_if_does_not_work_on_this_compiler<T>
96 template <
bool B,
class T = detail::enable_if_default_T>
97 struct disable_if_c : enable_if_does_not_work_on_this_compiler<T>
100 template <
bool B,
class T = detail::enable_if_default_T>
101 struct lazy_enable_if_c : enable_if_does_not_work_on_this_compiler<T>
104 template <
bool B,
class T = detail::enable_if_default_T>
105 struct lazy_disable_if_c : enable_if_does_not_work_on_this_compiler<T>
108 template <
class Cond,
class T = detail::enable_if_default_T>
109 struct enable_if : enable_if_does_not_work_on_this_compiler<T>
112 template <
class Cond,
class T = detail::enable_if_default_T>
113 struct disable_if : enable_if_does_not_work_on_this_compiler<T>
116 template <
class Cond,
class T = detail::enable_if_default_T>
117 struct lazy_enable_if : enable_if_does_not_work_on_this_compiler<T>
120 template <
class Cond,
class T = detail::enable_if_default_T>
121 struct lazy_disable_if : enable_if_does_not_work_on_this_compiler<T>
126 #endif // BOOST_NO_SFINAE