Diferencias de las implementaciones de Otros
Específicos de Microsoft
La lista siguiente muestra algunas diferencias entre Microsoft C++ y otros compiladores.
El compilador no puede crear instancias de una plantilla fuera del módulo en el que se define.Visual C++ no admite la palabra clave de export .
Las plantillas no se pueden utilizar con funciones declaradas con __declspec (dllimport) o __declspec (dllexport).
Todos los argumentos de plantilla deben ser de un tipo inequívocamente que exactamente las coincidencias que de la lista de parámetros de plantilla.Por ejemplo:
template< class T > T check( T ); template< class S > void watch( int (*)(S) ); watch( check ); //error
El compilador debe crear instancias de la función con plantilla check en el formulario int check( int ), pero la inferencia no puede realizar su seguimiento.
Al resolver los nombres utilizados en plantillas de clase o plantillas de función, todos los nombres se tratan como nombres dependientes.Vea Resolución de nombres para los tipos de Dependientes
En una plantilla de clase, el parámetro de plantilla se puede volver a definir en el ámbito de la definición de clase.Vea La resolución de nombres para Locally declarado nombres