voglio scrivere il seguente:Cosa devo fare invece della specializzazione parziale dei modelli di funzione?
template <typename S, typename T> void foo() {
/* code for the general case */
}
template <typename T> void foo<MySType,T>() {
/* partially specialized code - for any kind of T, but when S is MySType */
}
o, in altri casi, il seguente:
template <typename S, typename T> void bar(const S& a, const T& b) {
/* code for the general case */
}
template <typename T> void bar<MySType,T>(const MySType& a, const T& b) {
/* partially specialized code - for any kind of T, but when S is MySType */
}
C++ (11) non mi permette di fare questo.
Ora, ho letto this question and its answers; supponiamo di acquistare la spiegazione del motivo per cui non abbiamo una specializzazione parziale dei modelli (o presumo semplicemente che io stia vivendo nella realtà e in realtà voglia di scrivere il codice). Bene, che cosa do faccio, invece?
Preferirei non ricoprire queste funzioni in una classe a meno che non sia assolutamente la mia ultima risorsa.
onestamente più mi immergo in C++ 11 e C++, in generale, più penso che "modello di specializzazione" è un titolo orribile per quello che sta succedendo . Non esiste una "specializzazione template" – user2485710
@ user2485710: Mi dispiace, non capisco ... puoi elaborare? O link a dove hai discusso questo più a lungo? – einpoklum
Non solo la specializzazione dei modelli è una cosa, è una macchina completa di Turing. Ti può far impazzire, però. – Potatoswatter