Sto provando a fare alcune cose di specializzazione parziale. Ho un tuple
e voglio ripetere da un certo indice di elementi al primo indice di tupla, accumulando un valore da ciascun tipo nel tuple
. Ciò sembrerebbe essere una semplice questione dell'uso di un'istanza di modello ricorsiva.Specializzazione parziale di modelli con parametri interi
Il problema è che non riesco a far funzionare la ricorsione. Per fermare la ricorsione, ho bisogno di specializzare parzialmente la funzione template alla tuple index 0. Sembra abbastanza semplice, ma non funziona.
Nota: ho rimosso la parte reale dello tuple
dell'esempio, poiché non è rilevante; è la specializzazione del modello che non funziona.
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. È vero? C'è un altro modo per gestire questo genere di cose?
ho potuto differenziare classe diversa con diverse variabili utenti in questo modo? Potrei indovinare si? – GameDeveloper