estoy teniendo compilar los apuros de tiempo con el siguiente código:C++ pregunta plantilla de especialización parcial
template <typename T,
template <class T, class Allocator = std::allocator<T> > class C>
bool is_in(const C<T>& a, const C<T>& b);
template <typename T, std::vector> // HERE
bool is_in(const std::vector<T>& a, const std::vector<T>& b)
{
return false; // implementation tbd
}
...
vector<int> a, b;
cout << is_in(a,b) << endl;
El mensaje de error es (en la línea marcada "AQUÍ"):
error: 'std::vector' is not a type
(de Por supuesto, I tiene vector incluido de std!). ¿Cualquier sugerencia? Estuve jugando con eso por un tiempo, pero estoy llegando al punto en el que podría necesitar algo de ayuda :-) Necesito especializar parcialmente la declaración de la plantilla inicial para que pueda tener las implementaciones de cambio de compilador dependiendo del tipo real del contenedor C (habrá un is_in para conjuntos, uno para vectores, uno para rangos ..., con diferentes algoritmos cada vez).
Gracias!
Una solución es colocar la función en una clase. –
Booouuuhhh! :-) Por supuesto, eso reducirá mis esfuerzos. Tendré que desplegar un objeto de función ... – Frank