Boost logo

Boost Users :

Subject: Re: [Boost-users] PP: commas issues
From: Philipp Moeller (philipp.moeller_at_[hidden])
Date: 2012-02-29 12:41:35

"MM" <finjulhich_at_[hidden]> writes:

> Hi,
> I am trying to generate a list of instances of the same template with
> different pairs of args, to populate a mpl container, with PP
> so, mpl::vector< tmpl<A::x,A::y>, tmpl<B::x,B::y>, tmpl<C::x, C::y> >
> i'm having trouble with the commas.
> I successfully generate the pp sequence
> (tmpl<A::x,A::y>)(tmpl<B::x,B::y>) (tmpl<C::x, C::y>)
> but from this to get the enumeration, it's impossible using SEQ_ENUM,
> because the sequence contains commas
> MM
You could use something like:

#include <boost/preprocessor/seq.hpp>
#include <boost/preprocessor/repetition/enum.hpp>

#define SEQ (A)(B)(C)

#define TMPL(elem) (tmpl<elem::x, elem::y>)
#define MACRO(z,n,data) TMPL(BOOST_PP_SEQ_ELEM(n, SEQ))


This also has the benefit of separating the class names from what you
want to do with them.

Philipp Moeller

Boost-users list run by williamkempf at, kalb at, bjorn.karlsson at, gregod at, wekempf at