10

Tengo una clase de plantilla para la que tengo algunas especializaciones.
Pero la siguiente especialización es una plantilla en sí misma. ¿Cómo se especifica esto:Especialización que es en sí misma una plantilla

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

¡Me pregunto si usted no sabe esto! – Nawaz

+0

@Nawaz: ¿mi pensamiento también, tal vez a última hora de la noche? –

+0

Ahora que veo la respuesta es obvio, pero seguí agregando otra línea de plantilla en su. –

Respuesta

19

Trivial parcialización especialización?

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

+1. A veces (¿a menudo?) La respuesta obvia es la respuesta correcta :) – ereOn

+0

@ereOn: la verdadera pregunta es -> ¿por qué recibo tantos votos por una respuesta tan trivial: x? –

+2

Supongo que la gente simplemente ama la simplicidad :) – ereOn

Cuestiones relacionadas