"David A. Greene" <[EMAIL PROTECTED]> writes: > [Posted to boost because MPL is not yet released. At what > point should these questions go to boost-users?] > > Say I have a type my_type: > > template<typename T, typename U, typename V> > struct my_type { ... } > > Now let's say I want to create a generator that > binds T to some type but leaves U and V free to > be filled in later. Basically, I want something > like this: > > template<typename Bound> > struct my_type_generator { > template<typename U, typename V> > struct apply { > typedef my_type<Bound, U, V> type; > }; > };
Looks good to me. > Is there a convenient way to create this with MPL? You want it to be more convenient than that?! template <class T, class U, class V> struct my_type_generator { typedef my_type<T,U,V> type; }; lambda<my_type_generator> does it, unless of course your compiler needs BOOST_MPL_AUX_LAMDA_SUPPORT. I don't think it's much of a savings, though. > I thought lambda might do the trick, but apparently not: > > typedef my_type<int, mpl::_1, mpl::_2> my_type_generator; > > (This will be passed to an MPL algorithm so I didn't > bother with lambda<>). > > This causes a static assertion in mpl::arg<2> where it > sees a void type for V (I think). > > Is the problem that my_type doesn't contain a ::type > member? Maybe. What compiler are you using? > my_type is not a metafunction so maybe it just can't be used > conveniently with mpl. It's easy enough to manually define > my_type_generator, but I think this is a pretty common pattern and > it might be useful as a library component. Hmmmm... -- David Abrahams [EMAIL PROTECTED] * http://www.boost-consulting.com Boost support, enhancements, training, and commercial distribution _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost