假設我的代碼: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