Boost logo

Boost :

Subject: [boost] [mpl] Using transform problem and solution
From: Edward Diener (eldiener_at_[hidden])
Date: 2011-01-27 21:04:54

I have a boost::mpl::vector of nullary metafunctions and I need to
transform it into a sequence of the metafunction's inner types. As in:

typedef boost::mpl::vector<boost::mpl::identity<int> > tvec;
typedef boost::mpl::vector<int> tvecinner;

So I try boost::mpl::transform:

typedef typename boost::mpl::transform<tvec,_1>::type ttrans;

But that does not work and the assert fails. Evidently my _1 is not
working by itself although it seems as if it should because it is a
placeholder expression and its inner type is what I want.

So I try:

template <class T>
struct tself : T

and now instead:

typedef typename boost::mpl::transform<tvec,tself<_1> >::type ttrans;

works fine and the assert succeeds.

But that 'tself' hack seems like it should be really unnecessary. Have I
missed something cleaner and easier ?

Boost list run by bdawes at, gregod at, cpdaniel at, john at