私は、メタプログラミングの階乗的な例に別のテンプレート引数を追加しようとします。しかし、以下のことはうまくいかない。正しい方法は何ですか?明示的な引数を1つ持つテンプレート
コード:
#include <iostream>
template <typename T, int Depth>
inline void loop(T i){
std::cout << i;
loop<T, Depth-1>(i - 1);
}
template <typename T, int Depth>
inline void loop<T, 0>(T i){
std::cout << i << std::endl;
}
int main(void){
int i = 10;
loop<int, 3>(i);
}
エラー:
test4.cpp(9): error: an explicit template argument list is not allowed on this declaration
inline void loop<T, 0>(T i){
どのようにそのループを呼び出すのですか?主な機能はどのように見えるのですか? –
'int main(void){ int i = 10;を使用するとエラーになります。 ループ(i、std :: integral_constant {}); } 'g ++ -std = C++ 14でコンパイルしてください。テンプレートインスタンシエーションの深さが900を超えています。 –
@rxuコードが正常に動作するようになりました。 –