假设我的代码:C++模板递归停止条件
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
创建单独的专业化?
哇,这真是我想不到的好方法。 – Ruslan