aviso do compilador (nível 4) C4347
Mensagem de erro
alterar de comportamento: modelo de função é chamado em vez de 'function'
No Visual Studio. NET, se você tivesse uma função do modelo e uma função nontemplate com o mesmo nome sistema autônomo a função do modelo, o compilador tratadas incorretamente a função nontemplate sistema autônomo uma especialização da função do modelo.
Para obter um código que funciona da mesma em todas as versões do Visual C++, adicionar template<> acima da função nontemplate, tornando-o uma especialização real explícita.
Para obter mais informações, consulte Resumo das alterações de quebras de time de compilar.
Esse aviso está desativado por padrão.Para obter mais informações, consulte Avisos do compilador estão desativado por padrão.
Exemplo
O exemplo a seguir gera C4347.
// C4347.cpp
// compile with: /W4 /EHsc
#pragma warning (default : 4347)
template <typename T>
void f(T t) { T i = t; i = 0; }
void f(int i) { i++; }
// OK
template <typename T>
void f2(T t) { T i = t; i = 0; }
template <>
void f2(int i) { i++; }
int main() {
f(5); // regular function call
f<int>(5); // C4347 calls implicit instantiation
f2(5);
f2<int>(5);
}