10

Ho una classe template per la quale ho alcune specializzazioni.
Ma la specializzazione successiva è un modello stesso. Come si specifica:Specializzazione che è a sua volta un modello

template<typename T> 
class Action 
{ 
    public: void doStuff() { std::cout << "Generic\n"; } 
} 

// A specialization for a person 
template<> 
class Action<Person> 
{ 
    public: void doStuff() { std::cout << "A Person\n";} 
} 


// I can easily specialize for vectors of a particular type. 
// But how do I change the following so that it works with all types of vector. 
// Not just `int` 
template<> 
class Action<std::vector<int> > 
{ 
    public: void doStuff() { std::cout << "A Generic Vector\n";} 
} 
+2

Mi sto solo chiedendo che non lo sai! – Nawaz

+0

@Nawaz: anche il mio pensiero, a tarda notte forse? –

+0

Ora che vedo la risposta è ovvio, ma ho continuato ad aggiungere un'altra linea di template nella loro. –

risposta

19

Trivial specializzazione parziale?

template <typename T> 
class Action<std::vector<T>> { 
public: 
    void doStuff() { std::cout << "A Generic Vector\n"; } 
}; 
+2

+1. A volte (spesso?) La risposta ovvia è la risposta giusta :) – ereOn

+0

@ereOn: la vera domanda è -> perché ottengo così tanti voti per una risposta così banale: x? –

+2

Immagino che la gente ami semplicemente la semplicità :) – ereOn

Problemi correlati