次のように、テンプレートを使用して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;
}
Cygwinでg++3.4.4をコンパイルすると、次のエラーが発生します。
tmp.cpp:12:エラー:タイプ
T' of template argument
0'はテンプレートパラメータに依存します
私は何が間違っているのですか?タイプTであることを示すために、どういうわけか0に注釈を付ける必要がありますか?
前もって感謝します。