Если вы можете использовать хотя бы C ++ 11, вы можете delete
шаблонный метод с тем же именем
template <typename U>
void testMethod (U const &) = delete;
Таким образом, когда вы вызываете testMethod()
с точно T
значение, не шаблонный метод является предпочтительным;когда вы вызываете testMethod()
со значением другого типа, компилятор выбирает шаблон testMethod()
, но удаляется, поэтому выдается ошибка компиляции.