
Hi, Lets say I have an mpl vector defined as : template <typename Traits> struct A { }; template <typename Traits> struct B { }; typedef mpl::vector<A<mpl::_>, B<mpl::_> > MyVec; struct MyTraits {}; How do I 'apply' or transform MyVec with MyTraits? ie. I want the mpl::vector ... boost::mpl::vector<A<MyTraits>, B<MyTraits>>; I realise I can do mpl::apply<A<mpl::_>, MyTraits> to get A<MyTraits> but I can't work out how to do the equivalent to the entire vector. mpl::transform seems like what I should be using. Transform seems to do apply internally, but I can't work out the syntax to do something like: using substituted = typename boost::mpl::transform<MyVec, boost::mpl::apply<boost::mpl<_>, MyTraits> >::type; (This isn't right!) It may be I am confused because inside the transform, boost::mpl::_1 is the item in the vector, not the 'inner' placeholder. Sorry if this is a basic question ... Regards, Andrew