Diferenças de outras implementações
Específico da Microsoft
A lista a seguir mostra algumas diferenças entre Microsoft C++ e outros compiladores.
O compilador não pode criar uma instância de um modelo fora do módulo no qual ela está definida.Visual C++ não oferece suporte a palavra-chave de export .
Os modelos não podem ser usados com as funções declaradas com __declspec (dllimport) ou __declspec (dllexport).
Todos os argumentos de modelo devem ser de um tipo que não ambíguo exatamente as correspondências que a lista de parâmetros de modelo.Por exemplo:
template< class T > T check( T ); template< class S > void watch( int (*)(S) ); watch( check ); //error
O compilador deve criar uma instância da função modelo check no formulário int check( int ), mas a inferência não pode ser seguido.
Para resolver os nomes usados nos modelos de classe ou em modelos de função, todos os nomes são tratados como nomes dependentes.Consulte Resolução de tipos para dependentes
Em um modelo de classe, o parâmetro de modelo pode ser redefinido no escopo da definição de classe.Consulte Resolução de nomes para declarados localmente