Для чего нужно ключевое слово export? Где реально его можно использовать?
Ответ
В стандарте C++ в примечании к параграфу №1 раздела 2.12 Keywords написано
[ Note: The export keyword is unused but is reserved for future
use.—end note ]:
То есть это ключевое слово в настоящий момент нигде не используется, но зарезервировано для использования в будущем.
Ранее в стандарте C++ 2003 оно использовалось в определении шаблонов:
1 A template defines a family of classes or functions.
template-declaration:
exportopt template < template-parameter-list > declaration
^^^^^^
но было исключено из стандарта. так как это средство не было задействовано многими компиляторами.
Вот пара цитат из с тандарта C++ 2003 (14 Templates), где имеются ссылка на это ключевое слово
6 A namespace-scope declaration or definition of a non-inline function
template, a non-inline member function template, a non-inline member
function of a class template or a static data member of a class
template may be preceded by the export keyword. If such a template is
defined in the same translation unit in which it is declared as
exported, the definition is considered to be exported. The first
declaration of the template containing the export keyword must not
follow the definition.
8 Templates defined in an unnamed namespace shall not be exported. A
template shall be exported only once in a program. An implementation
is not required to diagnose a violation of this rule. A non-exported
template must be defined in every translation unit in which it is
implicitly instantiated (14.7.1), unless the corresponding
specialization is explicitly instantiated (14.7.2) in some translation
unit; no diagnostic is required. [Note: See also 14.7.2. ] An exported
template need only be declared (and not necessarily defined) in a
translation unit in which it is instantiated. A function template
declared both exported and inline is just inline and not exported.
Комментариев нет:
Отправить комментарий