
I just tried to build this code in visual studio 2005, and got error: error C3201: the template parameter list for class template 'boost::mpl::bind2<F,T1,T2>::apply' does not match the template parameter list for template parameter 'boolfunc' This code works fine with gcc, and boost mpl portability page (http://www.boost.org/libs/mpl/doc/tutorial/portability.html) says my version of visual studio should be able to compile this. However, it appears to think the lambda< ... >::type::apply is not a metafunction. Any help will be greatly appreciated. -Matt Brown #include <iostream> #include <boost/mpl/lambda.hpp> #include <boost/type_traits/is_same.hpp> #include <boost/mpl/placeholders.hpp> template <template <typename> class boolfunc> class test { public: static void print() { if(boolfunc<int>::type::value) { std::cout << "int: true\n"; } } }; int main(void) { test< boost::mpl::lambda< boost::is_same<boost::mpl::_1, int> >::type::apply >::print(); };