I asked the following question earlier, but the solution doesn\'t seem to work in this particular case.
How do I print out a comma multiple times using Boost Preprocesso
It turns out that you can do this without __VA_ARGS__. In this simple example I used a comma which is in the template argument of function toString Working demo:
#include
#include
#include
#include
#define SEQUENCE (1)(2)(3)(4)(5)(6)(7)(8)(9)(10)
#define IGNORE_ARG(arg)
#define GET_NAME(data) BOOST_PP_SEQ_ELEM(0, data)
#define GET_BELOW(data) BOOST_PP_SEQ_ELEM(1, data)
#define PARSE_SEQUENCE(r, data, elem) \
BOOST_PP_IF( \
BOOST_PP_GREATER_EQUAL(elem, GET_BELOW(data)), \
GET_NAME(data), IGNORE_ARG) \
(elem)
#define SKIP_NUMBERS_BELOW(name, below) \
BOOST_PP_SEQ_FOR_EACH(PARSE_SEQUENCE, (name)(below), SEQUENCE)
#define TEST(name) SKIP_NUMBERS_BELOW(name, 4)
#define MACRO_CONTAINING_COMMA(N) toString() <<
template // whatever, I just need a comma here.
std::string toString() {
return boost::lexical_cast(a) + ":" + boost::lexical_cast(b) + " ";
}
int main() {
std::cout << TEST(MACRO_CONTAINING_COMMA) "\n";
}