Вот код, который отлично работает:
template<typename... Args> struct count;
template<>
struct count<> {
static const int value = 0;
};
template<typename T, typename... Args>
struct count<T, Args...> {
static const int value = 1 + count<Args...>::value;
};
теперь мне было интересно, почему нам нужно частично специализировать шаблон класса count?
Можем ли мы сделать что-то вроде:
template< typename... args> struct dd; // edited according to answer but now getting error redeclared with 2 template parameters which is point below with mark %%
template<>
struct dd<>{
static const int value = 0;
};
template<typename T, typename... args> //%%
struct dd{
static const int value= 1+ dd<args...>::value;
};
но это не работает, но почему?
Любая помощь очень ценится:)
Редактировать : редактировать решение в соответствии с ответом.