Почему этот макрос подсчета аргументов с переменным числом аргументов не работает в VC ++?

Я получил следующую реализацию, чтобы получить количество аргументов в макросе с переменным числом аргументов (в настоящее время ограничено 16 аргументами). Однако для VS2010 вывод всегда равен 1 , независимо от количества переданных аргументов. С GCC вывод правильный, что привело меня к выводу, что я, должно быть, пропустил что-то конкретное для MSVC (10).

#define PP_NARGS(...) \
    _xPP_NARGS_IMPL(__VA_ARGS__,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0)

#define _xPP_NARGS_IMPL(x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,x14,x15,N,...) N

int main(){
    int i = PP_NARGS(A,V,C,X,Y,Z);

    std::cout << i;

    std::cin.get();
    return 0;
}

Итак, вопрос в том, как указано в заголовке, любая помощь будет оценена.

17
задан a3f 31 March 2015 в 03:29
поделиться