Пример

В этом примере используются две функции с именем foo, которые перегружают друг друга. Это может вызвать непредвиденные результаты.

template<class T> class MyClass {
   public:
      int foo(T type);
      int foo(int b);
};

Решение

Создайте специализированные функции (см. следующий пример) или используйте шаблоны специализированных функций, удаляющие неоднозначные варианты из исходного кода.

template<class T> class MyClass {
   public:
      int fncType(T type);
      int fncInt(int b);
};