I'm trying to get the following to compile on solaris using S1S12u1; #include <boost/mpl/copy.hpp> #include <boost/mpl/set.hpp> #include <boost/type_traits.hpp> #include <boost/mpl/placeholders.hpp> #include <boost/mpl/inserter.hpp> #include <boost/mpl/insert.hpp> #include <boost/mpl/filter_view.hpp> typedef boost::mpl::copy< boost::mpl::filter_view< boost::mpl::set<int>, boost::is_same<boost::mpl::_, int> >, boost::mpl::inserter< boost::mpl::set<>, boost::mpl::insert<boost::mpl::_, boost::mpl::_> > >::type type; template <class undefined> struct Debug; Debug<type> debug; int main(int argc, char *argv[]) { return 0; } and I get the following compiler errors "boost_1_42_0/boost/mpl/aux_/filter_iter.hpp", line 66: Error: Redefining boost::mpl::next<boost::mpl::T> after use in boost::mpl::aux::filter_i ter<boost::mpl::s_iter<boost::mpl::set<int, char, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_ ::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<int, boost::mpl::set0<mpl_::na>>>, boo st::mpl::s_iter<boost::mpl::set<int, char, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, m pl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na>>, boost::mpl::protect<boost::mpl::bin d2<boost::mpl::quote2<boost::is_same<boost::T, boost::U>, mpl_::void_>, mpl_::arg<-1>, int>, 0>>. "boost_1_42_0/boost/mpl/next_prior.hpp", line 31: Where: While specializing "boost::mpl::aux::filter_iter<boost::mpl::s_iter<boost::mpl::set <int, char, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mp l_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<int, boost::mpl::set0<mpl_::na>>>, boost::mpl::s_iter<boost::mpl::set<int, c har, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na>>, boost::mpl::protect<boost::mpl::bind2<boost::mpl::quote2<boost::is_same<b oost::T, boost::U>, mpl_::void_>, mpl_::arg<-1>, int>, 0>>". "boost_1_42_0/boost/mpl/next_prior.hpp", line 31: Where: Specialized in boost::mpl::next<boost::mpl::aux::filter_iter<boost::mpl::s_iter<boo st::mpl::set<int, char, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<int, boost::mpl::set0<mpl_::na>>>, boost::mpl::s_iter<boost::mpl ::set<int, char, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::n a, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na>>, boost::mpl::protect<boost::mpl::bind2<boost::mpl::quote2<boos t::is_same<boost::T, boost::U>, mpl_::void_>, mpl_::arg<-1>, int>, 0>>>. "boost_1_42_0/boost/mpl/aux_/preprocessed/plain/fold_impl.hpp", line 162: Where: Specialized in boost::mpl::aux::fold_impl<-1, boost::mpl::a ux::filter_iter<boost::mpl::s_iter<boost::mpl::set<int, char, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mp l_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::s_item<int, boost::mpl::set0<mpl_ ::na>>>, boost::mpl::s_iter<boost::mpl::set<int, char, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na>>, boost::mpl::protect<boo st::mpl::bind2<boost::mpl::quote2<boost::is_same<boost::T, boost::U>, mpl_::void_>, mpl_::arg<-1>, int>, 0>>, boost::mpl::aux::filter_iter<boost ::mpl::s_iter<boost::mpl::set<int, char, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl _::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na>>, boost::mpl::s_iter<boost::mpl::set<in t, char, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_: :na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::mpl::set0<mpl_::na>>, boost::mpl::protect<boost::mpl::bind2<boost::mpl::quote2<boost::is_sa me<boost::T, boost::U>, mpl_::void_>, mpl_::arg<-1>, int>, 0>>, boost::mpl::set<mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_ ::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost:: mpl::insert<mpl_::arg<-1>, mpl_::arg<-1>, mpl_::na>>. "boost_1_42_0/boost/mpl/fold.hpp", line 39: Where: Specialized in boost::mpl::fold<boost::mpl::filter_view<boost::mpl::set<int, char, mpl_:: na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::is_same<mpl_::arg<-1>, int>>, boost::mpl::set<mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boo st::mpl::insert<mpl_::arg<-1>, mpl_::arg<-1>, mpl_::na>>. "boost_1_42_0/boost/mpl/copy.hpp", line 36: Where: Specialized in boost::mpl::aux::copy_impl<boost::mpl::filter_view<boost::mpl::set<int, ch ar, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::is_same<mpl_::arg<-1>, int>>, boost::mpl::inserter<boost::mpl::set<mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl _::na, mpl_::na, mpl_::na>, boost::mpl::insert<mpl_::arg<-1>, mpl_::arg<-1>, mpl_::na>>>. "boost_1_42_0/boost/mpl/copy.hpp", line 54: Where: Specialized in boost::mpl::copy<boost::mpl::filter_view<boost::mpl::set<int, char, mpl_:: na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::is_same<mpl_::arg<-1>, int>>, boost::mpl::inserter<boost::mpl::set<mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl _::na, mpl_::na>, boost::mpl::insert<mpl_::arg<-1>, mpl_::arg<-1>, mpl_::na>>>. "filter_view.cpp", line 19: Where: Specialized in non-template code. "filter_view.cpp", line 24: Error: In this declaration "debug" is of an incomplete type "Debug<boost::mpl::s_item<int, boost::mpl::set0<mpl_::na
". 2 Error(s) detected.
You can see by the debug that the program has managed to deduce the correct type, even though it errored. On GCC-4.1.1 this gives filter_view.cpp:24: error: aggregate 'Debug<boost::mpl::s_item<int, boost::mpl::set0<mpl_::na> > > debug' has incomplete type and cannot be defined Which is exactly what I want. Anyone else had these issues, found workarounds, etc? This problem also occurs with boost::mpl::transform_view, but appears to work for boost::mpl::joint_view. Any help appreciated. Jon. _________________________________________________________________ Send us your Hotmail stories and be featured in our newsletter http://clk.atdmt.com/UKM/go/195013117/direct/01/