From: Vesa Karvonen (vesa_karvonen_at_[hidden])
Date: 2002-04-18 14:49:18


From: "John Harris (TT)" <john.harris_at_[hidden]>
> I found that it compiles fine on MSVC with 100, but invocation of my
macros
> breaks (compiler runs forever) somewhere between 60 and 75.
>
> I need it to generate enum type declarations and char array initializer
> lists, and 16 is kind of low for a few of our enums.

How do you iterate the tuple elements? Do you use BOOST_PP_REPEAT() or do
you convert the tuple to a list and use BOOST_PP_LIST_FOR_EACH()?

Is the syntax very important?

It is possible to build lists that are much longer than the tuple limit 16
by using the following technique:

  BOOST_PP_LIST_FOLD_RIGHT_2ND
  ( BOOST_PP_LIST_APPEND_D
  , BOOST_PP_TUPLE_TO_LIST
    ( N
    , BOOST_PP_TUPLE_TO_LIST(M, (E11, E12, ..., E1M) )
    , BOOST_PP_TUPLE_TO_LIST(M, (E21, E22, ..., E2M) )
    , ...
    , BOOST_PP_TUPLE_TO_LIST(M, (EN1, EN2, ..., ENM) )
    )
  )

BOOST_PP_LIST_FOLD_RIGHT_2ND() macro is not available in the current
release, but it is available in the CVS.