Я пытаюсь использовать шаблоны для развертывания цикла в C ++ следующим образом.
#include <iostream>
template< class T, T i >
struct printDown {
static void run(void) {
std::cout << i << "\n";
printDown< T, i - 1 >::run();
}
};
template< class T >
struct printDown< T, 0 > {
static void run(void) {
std::cout << 0 << "\n";
}
};
int main(void) {
printDown< int, 10 >::run();
return 0;
}
Когда я компилирую w / g ++ 3.4 .4 в Cygwin, я получаю следующую ошибку.
tmp.cpp: 12: error: type
T 'of аргумент шаблона
0 'зависит от параметр (ы) шаблона
Что я делаю не так? Мне нужно как-то аннотировать 0, чтобы сказать, что это тип T?
Заранее спасибо.