forked from boostorg/utility
supporting mpl aware enable if now
[SVN r1504]
This commit is contained in:
@@ -66,27 +66,51 @@ namespace boost
|
|||||||
{
|
{
|
||||||
|
|
||||||
template <bool B, class T = void>
|
template <bool B, class T = void>
|
||||||
struct enable_if {
|
struct enable_if_c {
|
||||||
typedef T type;
|
typedef T type;
|
||||||
};
|
};
|
||||||
|
|
||||||
template <class T>
|
template <class T>
|
||||||
struct enable_if<false, T> {};
|
struct enable_if_c<false, T> {};
|
||||||
|
|
||||||
|
template <class Cond, class T = void>
|
||||||
|
struct enable_if : public enable_if_c<Cond::value, T> {};
|
||||||
|
|
||||||
template <bool B, class T>
|
template <bool B, class T>
|
||||||
struct enable_if_lazy {
|
struct lazy_enable_if_c {
|
||||||
typedef typename T::type type;
|
typedef typename T::type type;
|
||||||
};
|
};
|
||||||
|
|
||||||
template <class T>
|
template <class T>
|
||||||
struct enable_if_lazy<false, T> {};
|
struct lazy_enable_if_c<false, T> {};
|
||||||
|
|
||||||
|
template <class Cond, class T>
|
||||||
|
struct lazy_enable_if : public lazy_enable_if_c<Cond::value, T> {};
|
||||||
|
|
||||||
|
|
||||||
template <bool B, class T = void>
|
template <bool B, class T = void>
|
||||||
struct disable_if: public enable_if< !B, T> {};
|
struct disable_if_c {
|
||||||
|
typedef T type;
|
||||||
|
};
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
struct disable_if_c<true, T> {};
|
||||||
|
|
||||||
|
template <class Cond, class T = void>
|
||||||
|
struct disable_if : public disable_if_c<Cond::value, T> {};
|
||||||
|
|
||||||
template <bool B, class T>
|
template <bool B, class T>
|
||||||
struct disable_if_lazy: public enable_if_lazy< !B, T> {};
|
struct lazy_disable_if_c {
|
||||||
|
typedef typename T::type type;
|
||||||
|
};
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
struct lazy_disable_if_c<true, T> {};
|
||||||
|
|
||||||
|
template <class Cond, class T>
|
||||||
|
struct lazy_disable_if : public lazy_disable_if_c<Cond::value, T> {};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
} // namespace boost
|
} // namespace boost
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user