Ejemplo

En este ejemplo, tenemos dos funciones llamadas foo que se se cargan una sobre otra. Esto puede producir un comportamiento inesperado.

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

Solución

La solución consiste en escribir funciones especializadas, tal como muestra el ejemplo que figura más abajo o en utilizar plantillas de función especializadas que eliminan cualquier ambigüedad del código.

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