Функции с переменным числом аргументов (без аргументов!)

Предположим, вы хотите сделать это на C ++ 0x:

size_t count_int() { return 0; }
template<typename T, typename... Tn>
size_t count_int(T a0, Tn... an) {
    size_t n = is_integer<T>::value ? 1 : 0;
    return n + count_int(an...);
}

Хорошо, но нет необходимости передавать аргументы. К сожалению, это не работает:

size_t count_int() { return 0; }
template<typename T, typename... Tn>
size_t count_int() {
    size_t n = is_integer<T>::value ? 1 : 0;
    return n + count_int<Tn...>();
}

GCC жалуется на ошибку: нет соответствующей функции для вызова 'count_int ()' в предпоследней строке. Почему и как это исправить? Спасибо.

5
задан Hans 23 February 2011 в 12:58
поделиться