
Hi, I'm currently using the apply metafunction, and I have two different behaviors depending on the used compiler. Here is the code : #include <boost/mpl/lambda.hpp> #include <boost/mpl/apply.hpp> #include <boost/mpl/placeholders.hpp> #include <tr1/unordered_set> using namespace boost; using namespace mpl; int main () { apply < std::tr1::unordered_set < _1 , std::equal_to < int>, std::tr1::hash <int>, std::allocator < int > >, int > ::type foo; } With g++ 4.1, there is no error. With g++ 4.2, icc 9.1, an error occurs: - g++ : no class template named 'apply' in 'class std::tr1::unordered_set<mpl_::arg<1>, std::equal_to<int>, std::tr1::hash<int>, std::allocator<int>, false>' - icc: class "std::tr1::unordered_set<boost::mpl::_1, std::equal_to<int>, std::tr1::hash<int>, std::allocator<int>, false>" has no member class "apply" : F::template apply<T1> With g++ 4.3, on some computers, it works, on others it does not. Can you give me some help to make this work ? Thanks, -- Samuel