Exemplo

Nesse exemplo, temos duas funções com o nome foo que sobrecarregam uma à outra. Isso pode causar comportamento inesperado.

modelo<classe T> classe MinhaClasse {
   público:
      int foo(T tipo);
      int foo(int b);
};

Solução

A solução é escrever funções especializadas, como o exemplo abaixo demonstra, ou usar modelos de funções especializadas que removam qualquer ambiguidade do código.

modelo<classe T> classe MinhaClasse {
   público:
      int fncType(T tipo);
      int fncInt(int b);
};