Czy można w jakiś sposób zabronić używania funkcji szablonów dla typów, dla których specjalizacja nie została wyraźnie napisana. Mam na myśli coś takiegoniezespolony szablon bloku 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.
}
nie mogę pominąć generyczną wersję funkcji, bo wtedy kompilator mówi, że foo nie jest funkcją szablon gdy próbuję się specjalizować. Mógłbym po prostu napisać coś, co nie kompiluje się w funkcji ogólnej, i dodać komentarz wyjaśniający dlaczego, ale to byłoby dość nieinformacyjne. Chciałbym, aby kompilator działał bezpośrednio z błędem, jak "foo() nie jest zdefiniowane".