diff --git a/include/boost/utility/enable_if.hpp b/include/boost/utility/enable_if.hpp index df126c1..c8b54c4 100644 --- a/include/boost/utility/enable_if.hpp +++ b/include/boost/utility/enable_if.hpp @@ -14,8 +14,7 @@ #ifndef BOOST_UTILITY_ENABLE_IF_HPP #define BOOST_UTILITY_ENABLE_IF_HPP -#include -#include +#include "boost/config.hpp" // Even the definition of enable_if causes problems on some compilers, // so it's macroed out for all compilers that do not support SFINAE @@ -76,39 +75,42 @@ namespace boost namespace boost { - BOOST_STATIC_CONSTANT(bool, enable_if_does_not_work_on_this_compiler = false); + namespace detail { typedef void enable_if_default_T; } - template - struct enable_if_c - { BOOST_STATIC_ASSERT(enable_if_does_not_work_on_this_compiler); }; + template + struct enable_if_does_not_work_on_this_compiler; - template - struct disable_if_c - { BOOST_STATIC_ASSERT(enable_if_does_not_work_on_this_compiler); }; + template + struct enable_if_c : enable_if_does_not_work_on_this_compiler + { }; - template - struct lazy_enable_if_c - { BOOST_STATIC_ASSERT(enable_if_does_not_work_on_this_compiler); }; + template + struct disable_if_c : enable_if_does_not_work_on_this_compiler + { }; - template - struct lazy_disable_if_c - { BOOST_STATIC_ASSERT(enable_if_does_not_work_on_this_compiler); }; + template + struct lazy_enable_if_c : enable_if_does_not_work_on_this_compiler + { }; - template - struct enable_if - { BOOST_STATIC_ASSERT(enable_if_does_not_work_on_this_compiler); }; + template + struct lazy_disable_if_c : enable_if_does_not_work_on_this_compiler + { }; - template - struct disable_if - { BOOST_STATIC_ASSERT(enable_if_does_not_work_on_this_compiler); }; + template + struct enable_if : enable_if_does_not_work_on_this_compiler + { }; - template - struct lazy_enable_if - { BOOST_STATIC_ASSERT(enable_if_does_not_work_on_this_compiler); }; + template + struct disable_if : enable_if_does_not_work_on_this_compiler + { }; - template - struct lazy_disable_if - { BOOST_STATIC_ASSERT(enable_if_does_not_work_on_this_compiler); }; + template + struct lazy_enable_if : enable_if_does_not_work_on_this_compiler + { }; + + template + struct lazy_disable_if : enable_if_does_not_work_on_this_compiler + { }; } // namespace boost