Boost logo

Boost Users :

Subject: Re: [Boost-users] [preprocessor] Identity function for token concatenation
From: Jeffrey Lee Hellrung, Jr. (jeffrey.hellrung_at_[hidden])
Date: 2012-06-18 15:30:26


On Mon, Jun 18, 2012 at 12:25 PM, Jeremiah Willcock <jewillco_at_[hidden]>wrote:

> On Mon, 18 Jun 2012, Jeffrey Lee Hellrung, Jr. wrote:
>
> On Mon, Jun 18, 2012 at 10:35 AM, Jeremiah Willcock <jewillco_at_[hidden]>
>> wrote:
>> Boost.Preprocessor has a macro BOOST_PP_INTERCEPT to eat a numeric
>> value that it is token-concatenated onto. Is there a similar macro that
>> just
>> returns the value? I.e., some BOOST_PP_EMPTY_FOR_CONCAT such that
>> BOOST_PP_EMPTY_FOR_CONCAT ## 3 turns into 3? As with BOOST_PP_INTERCEPT, it
>> only needs to work for small integer values. Is there some other
>> technique I can use for this? I am using it to generate std::get<>
>> invocations in BOOST_PP_ENUM_BINARY_PARAMS. Thank you for your help.
>>
>>
>> I don't know any such facility in Boost.PP, but it's pretty trivial to
>> generate:
>>
>> #define X0 0
>> #define X1 1
>> #define X2 2
>> // etc.
>>
>> ...which makes me think I might be overlooking something in Boost.PP :/
>>
>> Somewhat related: what do your ENUM_BINARY_PARAMS invocations look like?
>> I know I've gotten away with cat'ing template parameter delimiters ("<" and
>> ">")
>> against preprocessor integer tokens.
>>
>
> I'm not using this code anymore, but it was basically:
>
> BOOST_PP_ENUM_BINARY_PARAMS(**nparams, std::get<ZZZ, >(tup)
> BOOST_PP_INTERCEPT)
>
> where ZZZ is the identity-type macro discussed in the email. Even using
> something that I would expect to work like + as ZZZ breaks since apparently
> signs aren't allowed at the beginnings of pp-tokens. I'm using GCC 4.7,
> and it seems to be strict about concatenations.
>

So, just to confirm,

BOOST_PP_ENUM_BINARY_PARAMS( nparams, std::get<, >(tup) BOOST_PP_INTERCEPT )

(i.e., with ZZZ being an empty token) does not work with gcc 4.7?

- Jeff



Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net