Boost logo

Boost :

From: Daniel James (daniel_at_[hidden])
Date: 2004-11-13 18:57:57


Paul Mensonides wrote:
>>1. Use of PP_SEQ interface to "parse" function name and arguments
>>
>> int X::foo(char* buf, size_t len)
>> {
>> BOOST_TRACE_MEM_FUN( (foo)(buf, len) );
>
> ^^^^^^^^
>
> You can't do this without variadic macros (ala C99). We should have these in
> C++ eventually, but we don't right now and the pp-lib doesn't support them.

I think he's just using BOOST_PP_SEQ_TAIL to get the arguments. This
means that they're never directly accessed by the sequence macros. For
example:

     #define ARGUMENT_STRING(fn)
         BOOST_PP_STRINGIZE(BOOST_PP_SEQ_TAIL(fn))

     ARGUMENT_STRING((foo)(buf, len)) // Expands to "(buf, len)"

That works on g++, although I don't know how portable it is.

Daniel


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk