Was this page helpful?
Your feedback about this content is important. Let us know what you think.
Additional feedback?
1500 characters remaining
Differences from Other Implementations

Differences from Other Implementations

The following list shows some differences between Microsoft C++ and other compilers.

  • The compiler cannot instantiate a template outside of the module in which it is defined. Visual C++.NET does not support the export keyword.

  • Templates cannot be used with functions declared with __declspec (dllimport) or __declspec (dllexport).

  • All template arguments must be of an unambiguous type that exactly matches that of the template parameter list. For example:

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

    The compiler should instantiate the check templated function in the form int check( int ), but the inference cannot be followed.

  • When resolving names used in class templates or function templates, all names are treated as dependent names. See Name Resolution for Dependent Types

  • In a class template, the template parameter can be redefined in the scope of the class definition. See Name Resolution for Locally Declared Names

Other Resources


Community Additions

© 2015 Microsoft