Ich versuche, etwas Teilspezialisierung zu machen. Ich habe eine tuple
, und ich möchte von einem bestimmten Elementindex auf den ersten Tupelindex iterieren und einen Wert von jedem Typ in der tuple
akkumulieren. Dies scheint eine einfache Sache zu sein, eine rekursive Template-Instanziierung zu verwenden.Partielle Spezialisierung von Templates mit ganzzahligen Parametern
Das Problem ist, ich kann nicht scheinen, die Rekursion zu arbeiten. Um die Rekursion zu stoppen, muss ich die Template-Funktion bei Tupel-Index 0 teilweise spezialisieren. Das schien einfach genug, aber es funktioniert nicht.
Hinweis: Ich habe die tatsächlichen tuple
Sachen aus dem Beispiel entfernt, da es irrelevant ist; Es ist die Template-Spezialisierung, die nicht funktioniert.
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. Ist das wahr? Gibt es einen anderen Weg, mit so etwas umzugehen?
konnte ich andere Klasse mit verschiedenen Mitgliedern Variablen unterscheiden diese Art und Weise? Ich könnte ja erraten? – GameDeveloper