|
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