
On 11/13/2011 11:05 AM, Gennadiy Rozental wrote:
Paul Mensonides<pmenso57<at> comcast.net> writes:
Variadic data is not a true data structure and should not be supported as such. Therefore, it should not have a POP_FRONT, for example. Convert it into a real data structure (such as a sequence) and then do your processing on that data structure.
How would it help me if I want to take first arguments from __VA_ARGS__ and pass the rest to the different variadic macro?
First I would say that it would be better internally to pass a PP sequence to your different macro rather than variadic data. But if you want to do it the way you say above, just convert the variadic data to a PP sequnce using BOOST_PP_VARIADIC_TO_SEQ, pop the first element from the sequence using BOOST_PP_SEQ_POP_FRONT, convert the sequence back to variadic data using BOOST_PP_SEQ_ENUM, and pass that data as your variadic data. In my VMD library and the work I did with Paul in adding variadic data to the preprocessor code on the trunk, I always mentioned that I viewed C++ variadic data as an easier to use interface for end-users but that Boost PP has much richer data types internally. That is why I believe the functionality regarding variadic data should be limited because Boost PP already has much richer functionality for its data types. Eddie