[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;
   };
};

Is there a convenient way to create this with MPL?  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?  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.

                     -Dave

--

"Some little people have music in them, but Fats, he was all music,
 and you know how big he was."  --  James P. Johnson

_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

Reply via email to