Поделиться через


Отличия от других реализаций

Только для систем 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
    

    Компилятор создает экземпляр шаблона, функция check в форме int check( int ) только выводом не передается.

  • При разрешении имен, используемые в шаблонах класса или шаблонах функции, все имена обрабатываются как зависимые имена.См. раздел разрешение имен для зависимых типов

  • В шаблоне класса, параметр шаблона можно переопределить в области определения класса.См. раздел Разрешение имен для локально, объявленных имен

См. также

Другие ресурсы

Шаблоны