コードがあるとします:
template<size_t num> void actLoop(float* result, const float* rvector,
size_t* xs, size_t indexIn=0)
{
for(xs[num]=0; xs[num]<N; ++xs[num])
{
size_t index = indexIn+xs[num]*strides[num];
if(num>0)
actLoop<num-1>(result,rvector,xs,index);
else
result[index] = work(rvector,index,xs);
}
}
のネスト レベルでネストされたループを作成する必要がありますnum
。コンパイルしようとすると、再帰が深すぎるというコンパイラ エラーが発生します。つまり、コンパイラが if(0>0) ステートメントを削除していないようです。
これを実現する良い方法はありnum=0
ますか?