I'm already most of the way there:
#include <boost/preprocessor.hpp>
#define COUNT(...) BOOST_PP_VARIADIC_SIZE(__VA_ARGS__)
COUNT(1,2,3)
COUNT(1,2)
COUNT(1)
COUNT()
Running this with -E
flag in GCC outputs the following
3 2 1 1
When what I need is:
3 2 1 0
What am I doing wrong here? I'm not set on using boost preprocessor
, but I do need the solution to be variadic.
Any ideas how to get this to work?
g++
with the-E
flag to expand the macro. It is verifiable. – StandridgeCOUNT()
is passing one argument; it's just empty. – SchmoozeBOOST_PP_IF(BOOST_PP_GREATER(BOOST_PP_VARIADIC_SIZE(__VA_ARGS__), 1), BOOST_PP_VARIADIC_SIZE(__VA_ARGS__), BOOST_PP_NOT(BOOST_PP_IS_EMPTY(__VA_ARGS__)))
work? – Schmooze