
Hello, The following code fails to compile (MSVC10, Boost 1.45) with "error C2893: Failed to specialize function template..." It seems that the compiler tries to evaluate mpl::apply, doesn't it? #include <boost/mpl/apply.hpp> #include <boost/mpl/bool.hpp> #include <boost/mpl/or.hpp> #include <boost/mpl/and.hpp> #include <boost/mpl/always.hpp> #include <boost/type_traits/is_same.hpp> #include <boost/utility/enable_if.hpp> using namespace boost::mpl; using boost::is_same; template<typename Type> void test(Type, typename boost::enable_if < and_ < not_<boost::is_same<Type, int> >, apply<always<true_>, typename Type::my_type> >
::type* dummy = 0) { }
template<typename Type> void test(Type, typename boost::disable_if < and_ < not_<boost::is_same<Type, int> >, apply<always<true_>, typename Type::my_type> >
::type* dummy = 0) { }
int main(int argc, char* argv[]) { test(int()); return 0; }