supporting mpl aware enable if now

[SVN r1504]
This commit is contained in:
Jaakko Järvi
2003-09-05 18:22:40 +00:00
parent b007400de4
commit 4d47b983aa

View File

@@ -66,27 +66,51 @@ namespace boost
{
template <bool B, class T = void>
struct enable_if {
struct enable_if_c {
typedef T type;
};
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>
struct enable_if_lazy {
struct lazy_enable_if_c {
typedef typename T::type type;
};
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>
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>
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