Я пытаюсь, чтобы моя функция шаблона выдавала ошибку времени компиляции, если создается неспециализированная базовая версия. Я попробовал обычный шаблон утверждения времени компиляции (отрицательный размер массива), но компиляция не срабатывает, даже когда шаблон не создается. Любые мысли о том, как заставить его терпеть неудачу тогда и только тогда, когда создается функция базового шаблона?
template<class Foo> void func(Foo x) {
// I want the compiler to complain only if this function is instantiated.
// Instead, the compiler is complaining here at the declaration.
int Must_Use_Specialization[-1];
}
template<> void func(int x) {
printf("Hi\n");
}