Abbastanza sicuro di sapere già la risposta, ma vale la pena provare.Posso dichiarare una specializzazione template da una lista di caratteri?
Quindi, dire che ho un TypeList:
template <typename ...Ts>
struct typelist{};
che contiene alcuni oggetti:
struct foo{};
struct bar{};
struct quux{};
using objects = typelist<foo, bar, quux>;
Ora ho una classe template (baz
) che può prendere uno di questi oggetti. Ma, a causa della dimensione del codice base e dei tempi di compilazione, voglio avere l'implementazione del mio metodo basato su modelli in un file cpp.
Quindi in fondo baz.cpp ho:
template <> class baz<foo>;
template <> class baz<bar>;
template <> class baz<quux>;
Il problema è che ho un sacco di classi come baz
, e l'elenco degli oggetti che essi lavorano con è anche in continua evoluzione. Quindi ... c'è comunque che posso mantenere la mia singola lista di oggetti e usarla nel file cpp di ogni oggetto-baz
-like per specializzarmi? Quindi, tutto ciò che devo fare è aggiornare la mia lista di caratteri quando ho un nuovo oggetto e tutti i file oggetto verranno ricostruiti.
Non è necessario * specializzare *, solo esplicitamente * istanziare * loro. – Jarod42
Questo potrebbe sicuramente essere fatto usando una macro. Dato che questo sarà isolato dal resto della tua base di codice, perché non farlo? –