Есть ли способ вызвать ошибку времени компиляции при попытке определенной специализации шаблона функции?
Сказать
template<typename T> T Factorial(T n) { ... }
short n;
cout << Factorial(n); // Error, short is too small
И есть лиспособ добиться того же эффекта для конкретных методов шаблонного класса?
Скажи
template<typename T> class Arithmetic
{
T n;
T GCD(T m) { ... }
T Factorial() { ... }
};
Arithmetic<short> A;
short m;
cout << A.GCD(m); // Ok
cout << A.Factorial(); // Error, short is too small