私は部分的な特殊化を行うことを試みています。私は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