Предположим, вы хотите сделать это на 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 ()' в предпоследней строке. Почему и как это исправить? Спасибо.