与其他实现方式的差异

Microsoft 专用

以下列表显示 Microsoft C++ 和其他编译器之间的一些差异。

  • 该编译器无法在用于定义模板的模块的外部实例化该模板。 Visual C++ 不支持 export 关键字。

  • 模板不能与利用 __declspec (dllimport)__declspec (dllexport) 声明的函数一起使用。

  • 所有模板参数必须是与模板参数列表的类型完全匹配的明确类型。 例如:

    template< class T > T check( T );
    template< class S > void watch( int (*)(S) );
    watch( check );     //error
    

    该编译器应采用 int check( int ) 形式实例化 check 模板化函数,但不能遵循推理。

  • 在解析类模板或函数模板中使用的名称时,应将所有名称视为依赖名称。请参阅依赖类型的名称解析

  • 在类模板中,可在类定义的范围内重新定义模板参数。请参阅本地声明名称的名称解析

请参见

其他资源

模板