
Hi, I have an mpl sequence of types and I want to ensure that each type occurs only once in that sequence (I do not control the initial sequence). The quickest way I could think of was copying that sequence into a set. Here's the utility I had in mind: template< typename T
struct as_set : copy< T , inserter< set<> , insert< _1, _2 > >
{}; Using this on, say, a vector indeed produces a set with all the types copied from the vector, duplicates removed. However, when I use the resulting set in an algorithm that iterates over the elements (I need inherit_linearly) it no longer compiles. The compiler (VC 7.1) complains that next_ is not member of set<na,na,...>. It seems as if the next iterator of the last element isn't properly defined. This isn't a problem with a normally constructed set (set<int,char>). Here's a minimal program that demonstrates the issue: #include <boost/mpl/set.hpp> #include <boost/mpl/vector.hpp> #include <boost/mpl/copy.hpp> #include <boost/mpl/insert.hpp> #include <boost/mpl/inserter.hpp> using namespace boost::mpl; template< typename T
struct as_set : copy< T , inserter< set<> , insert< _1, _2 > >
{}; typedef set<int,char> a_set; typedef vector<int,int,char> a_vector; typedef as_set< a_set >::type set_as_set; typedef as_set< a_vector >::type vector_as_set; typedef next< begin< a_set >::type >::type THIS_IS_OK; typedef next< next< begin< a_set >::type >::type >::type THIS_IS_OK_AS_WELL; typedef next< begin< a_vector >::type >::type THIS_IS_OK_TOO; typedef next< begin< set_as_set >::type >::type THIS_WORKS_TOO; typedef next< next< begin< set_as_set >::type >::type >::type THIS_FAILS; typedef next< next< begin< vector_as_set >::type >::type >::type THIS_FAILS_TOO; This is the output produced by the compiler: Compiling... set_as_copy_of_sequence_issue.cpp boost_1_34_0\boost\mpl\set\aux_\iterator.hpp(52) : error C2039: 'next_' : is not a member of 'boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>' boost_1_34_0\boost\mpl\aux_\preprocessed\plain\set.hpp(34) : see declaration of 'boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>' boost_1_34_0\boost\mpl\eval_if.hpp(41) : see reference to class template instantiation 'boost::mpl::next<T>' being compiled with [ T=boost::mpl::s_iter<set_as_set,boost::mpl::s_item<boost::mpl::if_na<boost::mpl::aux::resolve_bind_arg<boost::mpl::bind3<boost::mpl::quote3<boost::mpl::insert,boost::mpl::void_>,boost::mpl::lambda<boost::mpl::_1,boost::mpl::void_>::result_,boost::mpl::lambda<boost::mpl::_2,boost::mpl::void_>::result_,boost::mpl::lambda<boost::mpl::na,boost::mpl::void_>::result_>::apply<boost::mpl::aux::fold_impl<2,boost::mpl::begin<a_set>::type,boost::mpl::end<a_set>::type,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::state,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost ::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::operation>::state0,boost::mpl::deref<boost::mpl::aux::fold_impl<2,boost::mpl::begin<a_set>::type,boost::mpl::end<a_set>::type,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::state,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl ::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::operation>::iter0>::type>::a3,boost::mpl::aux::fold_impl<2,boost::mpl::begin<a_set>::type,boost::mpl::end<a_set>::type,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::state,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boos t::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::operation>::state0,boost::mpl::deref<boost::mpl::aux::fold_impl<2,boost::mpl::begin<a_set>::type,boost::mpl::end<a_set>::type,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::state,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost:: mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,b oost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::operation>::iter0>::type,boost::mpl::na,boost::mpl::na,boost::mpl::na>::type,boost::mpl::aux::resolve_bind_arg<boost::mpl::bind3<boost::mpl::quote3<boost::mpl::insert,boost::mpl::void_>,boost::mpl::lambda<boost::mpl::_1,boost::mpl::void_>::result_,boost::mpl::lambda<boost::mpl::_2,boost::mpl::void_>::result_,boost::mpl::lambda<boost::mpl::na,boost::mpl::void_>::result_>::apply<boost::mpl::aux::fold_impl<2,boost::mpl::begin<a_set>::type,boost::mpl::end<a_set>::type,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::state,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost ::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::operation>::state0,boost::mpl::deref<boost::mpl::aux::fold_impl<2,boost::mpl::begin<a_set>::type,boost::mpl::end<a_set>::type,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::state,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::m pl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,bo ost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::operation>::iter0>::type>::a2,boost::mpl::aux::fold_impl<2,boost::mpl::begin<a_set>::type,boost::mpl::end<a_set>::type,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::state,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl: :na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::operation>::state0,boost::mpl::deref<boost::mpl::aux::fold_impl<2,boost::mpl::begin<a_set>::type,boost::mpl::end<a_set>::type,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::state,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mp l::_1,boost::mpl::_2>>::operation>::iter0>::type,boost::mpl::na,boost ::mpl::na,boost::mpl::na>::type>::type,boost::mpl::aux::resolve_bind_arg<boost::mpl::bind3<boost::mpl::quote3<boost::mpl::insert,boost::mpl::void_>,boost::mpl::lambda<boost::mpl::_1,boost::mpl::void_>::result_,boost::mpl::lambda<boost::mpl::_2,boost::mpl::void_>::result_,boost::mpl::lambda<boost::mpl::na,boost::mpl::void_>::result_>::apply<boost::mpl::aux::fold_impl<2,boost::mpl::begin<a_set>::type,boost::mpl::end<a_set>::type,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::state,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost ::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::operation>::state0,boost::mpl::deref<boost::mpl::aux::fold_impl<2,boost::mpl::begin<a_set>::type,boost::mpl::end<a_set>::type,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::state,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::m pl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,bo ost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::operation>::iter0>::type>::a1,boost::mpl::aux::fold_impl<2,boost::mpl::begin<a_set>::type,boost::mpl::end<a_set>::type,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::state,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::ope ration>::state0,boost::mpl::deref<boost::mpl::aux::fold_impl<2,boost::mpl::begin<a_set>::type,boost::mpl::end<a_set>::type,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::state,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::operation>::iter0>::type,boost::mpl::na,boost::mpl::na,boost::mpl::na>::type>::ne xt_> ] boost_1_34_0\boost\mpl\set\aux_\iterator.hpp(56) : see reference to class template instantiation 'boost::mpl::eval_if<C,F1,F2>' being compiled with [ C=boost::mpl::has_key<set_as_set,boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>::type>, F1=boost::mpl::identity<boost::mpl::s_iter<set_as_set,boost::mpl::s_item<boost::mpl::if_na<boost::mpl::aux::resolve_bind_arg<boost::mpl::bind3<boost::mpl::quote3<boost::mpl::insert,boost::mpl::void_>,boost::mpl::lambda<boost::mpl::_1,boost::mpl::void_>::result_,boost::mpl::lambda<boost::mpl::_2,boost::mpl::void_>::result_,boost::mpl::lambda<boost::mpl::na,boost::mpl::void_>::result_>::apply<boost::mpl::aux::fold_impl<2,boost::mpl::begin<a_set>::type,boost::mpl::end<a_set>::type,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::state,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::n a,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::operation>::state0,boost::mpl::deref<boost::mpl::aux::fold_impl<2,boost::mpl::begin<a_set>::type,boost::mpl::end<a_set>::type,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl ::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::state,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::operation>::iter0>::type>::a3,boost::mpl::aux::fold_impl<2,boost::mpl::begin<a_set>::type,boost::mpl::end<a_set>::type,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boos t::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::state,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::operation>::state0,boost::mpl::deref<boost::mpl::aux::fold_impl<2,boost::mpl::begin<a_set>::type,boost::mpl::end<a_set>::type,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost:: mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,b oost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::state,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::operation>::iter0>::type,boost::mpl::na,boost::mpl::na,boost::mpl::na>::type,boost::mpl::aux::resolve_bind_arg<boost::mpl::bind3<boost::mpl::quote3<boost::mpl::insert,boost::mpl::void_>,boost::mpl::lambda<boost::mpl::_1,boost::mpl::void_>::result_,boost::mpl::lambda<boost::mpl::_2,boost::mpl::void_>::result_,boost::mpl::lambda<boost::mpl::na,boost::mpl::void_>::result_>::apply<boost::mpl::aux::fold_impl<2,boost::mpl::begin<a_set>::type,boost::mpl::end<a_set>::type,boost::mpl::inserter<boost::mpl::set<boost ::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::state,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::operation>::state0,boost::mpl::deref<boost::mpl::aux::fold_impl<2,boost::mpl::begin<a_set>::type,boost::mpl::end<a_set>::type,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::m pl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,bo ost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::state,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::operation>::iter0>::type>::a2,boost::mpl::aux::fold_impl<2,boost::mpl::begin<a_set>::type,boost::mpl::end<a_set>::type,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl: :na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::state,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::operation>::state0,boost::mpl::deref<boost::mpl::aux::fold_impl<2,boost::mpl::begin<a_set>::type,boost::mpl::end<a_set>::type,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::i nsert<boost::mpl::_1,boost::mpl::_2>>::state,boost::mpl::inserter<boo st::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::operation>::iter0>::type,boost::mpl::na,boost::mpl::na,boost::mpl::na>::type>::type,boost::mpl::aux::resolve_bind_arg<boost::mpl::bind3<boost::mpl::quote3<boost::mpl::insert,boost::mpl::void_>,boost::mpl::lambda<boost::mpl::_1,boost::mpl::void_>::result_,boost::mpl::lambda<boost::mpl::_2,boost::mpl::void_>::result_,boost::mpl::lambda<boost::mpl::na,boost::mpl::void_>::result_>::apply<boost::mpl::aux::fold_impl<2,boost::mpl::begin<a_set>::type,boost::mpl::end<a_set>::type,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost ::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::state,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::operation>::state0,boost::mpl::deref<boost::mpl::aux::fold_impl<2,boost::mpl::begin<a_set>::type,boost::mpl::end<a_set>::type,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::m pl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,bo ost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::state,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::operation>::iter0>::type>::a1,boost::mpl::aux::fold_impl<2,boost::mpl::begin<a_set>::type,boost::mpl::end<a_set>::type,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost: :mpl::_2>>::state,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::operation>::state0,boost::mpl::deref<boost::mpl::aux::fold_impl<2,boost::mpl::begin<a_set>::type,boost::mpl::end<a_set>::type,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::state,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::m pl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,bo ost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::operation>::iter0>::type,boost::mpl::na,boost::mpl::na,boost::mpl::na>::type>::next_>>, F2=boost::mpl::next<boost::mpl::s_iter<set_as_set,boost::mpl::s_item<boost::mpl::if_na<boost::mpl::aux::resolve_bind_arg<boost::mpl::bind3<boost::mpl::quote3<boost::mpl::insert,boost::mpl::void_>,boost::mpl::lambda<boost::mpl::_1,boost::mpl::void_>::result_,boost::mpl::lambda<boost::mpl::_2,boost::mpl::void_>::result_,boost::mpl::lambda<boost::mpl::na,boost::mpl::void_>::result_>::apply<boost::mpl::aux::fold_impl<2,boost::mpl::begin<a_set>::type,boost::mpl::end<a_set>::type,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::state,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,bo ost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::operation>::state0,boost::mpl::deref<boost::mpl::aux::fold_impl<2,boost::mpl::begin<a_set>::type,boost::mpl::end<a_set>::type,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boos t::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::state,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::operation>::iter0>::type>::a3,boost::mpl::aux::fold_impl<2,boost::mpl::begin<a_set>::type,boost::mpl::end<a_set>::type,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::m pl::_2>>::state,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::operation>::state0,boost::mpl::deref<boost::mpl::aux::fold_impl<2,boost::mpl::begin<a_set>::type,boost::mpl::end<a_set>::type,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::state,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl ::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boos t::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::operation>::iter0>::type,boost::mpl::na,boost::mpl::na,boost::mpl::na>::type,boost::mpl::aux::resolve_bind_arg<boost::mpl::bind3<boost::mpl::quote3<boost::mpl::insert,boost::mpl::void_>,boost::mpl::lambda<boost::mpl::_1,boost::mpl::void_>::result_,boost::mpl::lambda<boost::mpl::_2,boost::mpl::void_>::result_,boost::mpl::lambda<boost::mpl::na,boost::mpl::void_>::result_>::apply<boost::mpl::aux::fold_impl<2,boost::mpl::begin<a_set>::type,boost::mpl::end<a_set>::type,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na ,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::state,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::operation>::state0,boost::mpl::deref<boost::mpl::aux::fold_impl<2,boost::mpl::begin<a_set>::type,boost::mpl::end<a_set>::type,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,b oost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::state,boost::mpl:: inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::operation>::iter0>::type>::a2,boost::mpl::aux::fold_impl<2,boost::mpl::begin<a_set>::type,boost::mpl::end<a_set>::type,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::state,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na ,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::operation>::state0,boost::mpl::deref<boost::mpl::aux::fold_impl<2,boost::mpl::begin<a_set>::type,boost::mpl::end<a_set>::type,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::state,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,bo ost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl: :na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::operation>::iter0>::type,boost::mpl::na,boost::mpl::na,boost::mpl::na>::type>::type,boost::mpl::aux::resolve_bind_arg<boost::mpl::bind3<boost::mpl::quote3<boost::mpl::insert,boost::mpl::void_>,boost::mpl::lambda<boost::mpl::_1,boost::mpl::void_>::result_,boost::mpl::lambda<boost::mpl::_2,boost::mpl::void_>::result_,boost::mpl::lambda<boost::mpl::na,boost::mpl::void_>::result_>::apply<boost::mpl::aux::fold_impl<2,boost::mpl::begin<a_set>::type,boost::mpl::end<a_set>::type,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mp l::_1,boost::mpl::_2>>::state,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::operation>::state0,boost::mpl::deref<boost::mpl::aux::fold_impl<2,boost::mpl::begin<a_set>::type,boost::mpl::end<a_set>::type,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::state,boost::mpl::inserter<boost::mpl::set<boost::mpl: :na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost ::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::operation>::iter0>::type>::a1,boost::mpl::aux::fold_impl<2,boost::mpl::begin<a_set>::type,boost::mpl::end<a_set>::type,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::state,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na ,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::operation>::state0,boost::mpl::deref<boost::mpl::aux::fold_impl<2,boost::mpl::begin<a_set>::type,boost::mpl::end<a_set>::type,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::state,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,bo ost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl ::insert<boost::mpl::_1,boost::mpl::_2>>::operation>::iter0>::type,boost::mpl::na,boost::mpl::na,boost::mpl::na>::type>::next_>> ] boost_mpl_set_issue_test\boost_mpl_set_issue_test\set_as_copy_of_sequence_issue.cpp(31) : see reference to class template instantiation 'boost::mpl::next<T>' being compiled with [ T=boost::mpl::s_iter<set_as_set,boost::mpl::s_item<boost::mpl::if_na<boost::mpl::aux::resolve_bind_arg<boost::mpl::bind3<boost::mpl::quote3<boost::mpl::insert,boost::mpl::void_>,boost::mpl::lambda<boost::mpl::_1,boost::mpl::void_>::result_,boost::mpl::lambda<boost::mpl::_2,boost::mpl::void_>::result_,boost::mpl::lambda<boost::mpl::na,boost::mpl::void_>::result_>::apply<boost::mpl::aux::fold_impl<2,boost::mpl::begin<a_set>::type,boost::mpl::end<a_set>::type,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::state,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost ::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::operation>::state1,boost::mpl::deref<boost::mpl::aux::fold_impl<2,boost::mpl::begin<a_set>::type,boost::mpl::end<a_set>::type,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::m pl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::state,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::operation>::iter1>::type>::a3,boost::mpl::aux::fold_impl<2,boost::mpl::begin<a_set>::type,boost::mpl::end<a_set>::type,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl:: _2>>::state,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::operation>::state1,boost::mpl::deref<boost::mpl::aux::fold_impl<2,boost::mpl::begin<a_set>::type,boost::mpl::end<a_set>::type,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::state,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na ,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::m pl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::operation>::iter1>::type,boost::mpl::na,boost::mpl::na,boost::mpl::na>::type,boost::mpl::aux::resolve_bind_arg<boost::mpl::bind3<boost::mpl::quote3<boost::mpl::insert,boost::mpl::void_>,boost::mpl::lambda<boost::mpl::_1,boost::mpl::void_>::result_,boost::mpl::lambda<boost::mpl::_2,boost::mpl::void_>::result_,boost::mpl::lambda<boost::mpl::na,boost::mpl::void_>::result_>::apply<boost::mpl::aux::fold_impl<2,boost::mpl::begin<a_set>::type,boost::mpl::end<a_set>::type,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boo st::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::state,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::operation>::state1,boost::mpl::deref<boost::mpl::aux::fold_impl<2,boost::mpl::begin<a_set>::type,boost::mpl::end<a_set>::type,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost ::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::state,boost::mpl::inse rter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::operation>::iter1>::type>::a2,boost::mpl::aux::fold_impl<2,boost::mpl::begin<a_set>::type,boost::mpl::end<a_set>::type,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::state,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boo st::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::operation>::state1,boost::mpl::deref<boost::mpl::aux::fold_impl<2,boost::mpl::begin<a_set>::type,boost::mpl::end<a_set>::type,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::state,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost: :mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na, boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::operation>::iter1>::type,boost::mpl::na,boost::mpl::na,boost::mpl::na>::type>::type,boost::mpl::aux::resolve_bind_arg<boost::mpl::bind3<boost::mpl::quote3<boost::mpl::insert,boost::mpl::void_>,boost::mpl::lambda<boost::mpl::_1,boost::mpl::void_>::result_,boost::mpl::lambda<boost::mpl::_2,boost::mpl::void_>::result_,boost::mpl::lambda<boost::mpl::na,boost::mpl::void_>::result_>::apply<boost::mpl::aux::fold_impl<2,boost::mpl::begin<a_set>::type,boost::mpl::end<a_set>::type,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_ 1,boost::mpl::_2>>::state,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::operation>::state1,boost::mpl::deref<boost::mpl::aux::fold_impl<2,boost::mpl::begin<a_set>::type,boost::mpl::end<a_set>::type,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::state,boost::mpl::inserter<boost::mpl::set<boost::mpl::na, boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mp l::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::operation>::iter1>::type>::a1,boost::mpl::aux::fold_impl<2,boost::mpl::begin<a_set>::type,boost::mpl::end<a_set>::type,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::state,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boo st::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::operation>::state1,boost::mpl::deref<boost::mpl::aux::fold_impl<2,boost::mpl::begin<a_set>::type,boost::mpl::end<a_set>::type,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::insert<boost::mpl::_1,boost::mpl::_2>>::state,boost::mpl::inserter<boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost: :mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>,boost::mpl::in sert<boost::mpl::_1,boost::mpl::_2>>::operation>::iter1>::type,boost::mpl::na,boost::mpl::na,boost::mpl::na>::type>::next_> ] boost_1_34_0\boost\mpl\set\aux_\iterator.hpp(52) : error C2146: syntax error : missing ',' before identifier 'type' boost_1_34_0\boost\mpl\set\aux_\iterator.hpp(52) : error C2065: 'type' : undeclared identifier boost_1_34_0\boost\mpl\set\aux_\iterator.hpp(53) : error C2039: 'next_' : is not a member of 'boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>' boost_1_34_0\boost\mpl\aux_\preprocessed\plain\set.hpp(34) : see declaration of 'boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>' boost_1_34_0\boost\mpl\set\aux_\iterator.hpp(53) : error C2146: syntax error : missing ',' before identifier 'next_' boost_1_34_0\boost\mpl\set\aux_\iterator.hpp(53) : error C2065: 'next_' : undeclared identifier boost_1_34_0\boost\mpl\set\aux_\iterator.hpp(53) : error C2976: 'boost::mpl::s_iter' : too few template arguments boost_1_34_0\boost\mpl\set\aux_\iterator.hpp(68) : see declaration of 'boost::mpl::s_iter' boost_1_34_0\boost\mpl\set\aux_\iterator.hpp(53) : error C3203: 's_iter' : class template invalid as template argument for template parameter 'T', expected a real type boost_1_34_0\boost\mpl\set\aux_\iterator.hpp(54) : error C2039: 'next_' : is not a member of 'boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>' boost_1_34_0\boost\mpl\aux_\preprocessed\plain\set.hpp(34) : see declaration of 'boost::mpl::set<boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>' boost_1_34_0\boost\mpl\set\aux_\iterator.hpp(54) : error C2146: syntax error : missing ',' before identifier 'next_' boost_1_34_0\boost\mpl\set\aux_\iterator.hpp(54) : error C3861: 'next_': identifier not found, even with argument-dependent lookup boost_1_34_0\boost\mpl\set\aux_\iterator.hpp(54) : error C2976: 'boost::mpl::s_iter' : too few template arguments boost_1_34_0\boost\mpl\set\aux_\iterator.hpp(68) : see declaration of 'boost::mpl::s_iter' boost_1_34_0\boost\mpl\set\aux_\iterator.hpp(54) : error C3203: 's_iter' : class template invalid as template argument for template parameter 'T', expected a real type boost_1_34_0\boost\mpl\if.hpp(63) : error C2039: 'value' : is not a member of 'boost::mpl::has_key<boost::mpl::na,boost::mpl::na>' boost_1_34_0\boost\mpl\has_key.hpp(37) : see declaration of 'boost::mpl::has_key<boost::mpl::na,boost::mpl::na>' boost_1_34_0\boost\mpl\eval_if.hpp(40) : see reference to class template instantiation 'boost::mpl::if_<T1,T2,T3>' being compiled with [ T1=boost::mpl::has_key<boost::mpl::na,boost::mpl::na>, T2=boost::mpl::identity<int>, T3=boost::mpl::next<int> ] boost_1_34_0\boost\mpl\set\aux_\iterator.hpp(56) : see reference to class template instantiation 'boost::mpl::eval_if<C,F1,F2>' being compiled with [ C=boost::mpl::has_key<boost::mpl::na,boost::mpl::na>, F1=boost::mpl::identity<int>, F2=boost::mpl::next<int> ] boost_1_34_0\boost\mpl\if.hpp(63) : error C2065: 'value' : undeclared identifier boost_1_34_0\boost\mpl\if.hpp(67) : error C2955: 'boost::mpl::if_c' : use of class template requires template argument list boost_1_34_0\boost\mpl\if.hpp(37) : see declaration of 'boost::mpl::if_c' boost_1_34_0\boost\mpl\if.hpp(70) : error C2955: 'boost::mpl::if_c' : use of class template requires template argument list boost_1_34_0\boost\mpl\if.hpp(37) : see declaration of 'boost::mpl::if_c' boost_1_34_0\boost\mpl\if.hpp(70) : error C2955: 'boost::mpl::if_c' : use of class template requires template argument list boost_1_34_0\boost\mpl\if.hpp(37) : see declaration of 'boost::mpl::if_c' boost_1_34_0\boost\mpl\eval_if.hpp(41) : fatal error C1903: unable to recover from previous error(s); stopping compilation (I'm using Boost 1.34 with VC 7.1.) I have been staring at this problem for quite a while now and am unable to figure out completely what's going wrong. Is the way I'm tackling the problem the right way to go or is there a simpler alternative? Am I doing something wrong or overlooking something obvious altogether? Any help would be appreciated. Thanks, Sven