9
我想做一些部分專業化的東西。我有一個tuple
,我想從某個元素索引迭代到第一個元組索引,從tuple
中的每個類型累積一個值。這似乎是使用遞歸模板實例化的一個簡單問題。具有整數參數的模板部分專業化
問題是,我似乎無法得到遞歸工作。爲了停止遞歸,我需要在元組索引0處部分專門化模板函數。這似乎很簡單,但它不起作用。
注意:我已經從示例中刪除了實際的tuple
東西,因爲它是無關緊要的;這是模板專業化不起作用。
template<int Index, typename Tpl>
size_t CalcInterleaveByteOffset(const Tpl &t)
{
size_t prevOffset = CalcInterleaveByteOffset<Index - 1>(t);
return prevOffset + sizeof(Tpl);
}
template<typename Tpl>
size_t CalcInterleaveByteOffset<0, Tpl>(const Tpl &t)
{
return 0;
}
GCC simply says that this kind of specialization is not allowed.這是真的嗎?有沒有其他方式來處理這種事情?
我能區分不同類不同的成員變量這種方式?我猜可以嗎? – GameDeveloper