¿Es posible de alguna manera prohibir el uso de la función de plantilla para los tipos para los que no se ha escrito explícitamente la especialización? Me refiero a algo asíplantilla no especializada de bloque C++
template <typename T>
void foo(){}
template <>
void foo<int>(){}
int main(int argc, char* argv[]){
foo<int>(); //ok
foo<char>(); //Wrong - no specialized version for char.
}
no puedo saltar versión genérica de la función, porque entonces el compilador dice, de que fu no es una función de plantilla cuando intento especializarse. Simplemente podría escribir algo que no compila en una función genérica, y agregar algún comentario explicando por qué, pero esto sería bastante no informativo. Lo que me gustaría hacer es poder hacer que el compilador genere un error como "foo() no está definido".