Boost logo

Boost Users :

From: Samuel Charron (chammm_at_[hidden])
Date: 2007-03-27 11:50:43


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

Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net