With COUNT() , you have one empty argument.
You can use something like:
#define PP_IS_EMPTY(...) (#__VA_ARGS__[0] == '\0' ? 1 : 0) #define PP_COUNT(...) ((!PP_IS_EMPTY(__VA_ARGS__)) * (BOOST_PP_VARIADIC_SIZE(__VA_ARGS__)))
Alternatively, a variation pattern may be a solution.
template <typename ... Ts> constexpr std::size_t Count(Ts&&...) { return sizeof...(Ts); }
Jarod42
source share