私はいくつかの部分的な専門化をしようとしています。があり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 は、この種の特殊化は許可されていないと単純に述べています。本当?この種のことを処理する他の方法はありますか?