10-0055/N3065
John Spicer, Edison Design Group, jhs@edg.com
2010-03-09
Revision 0

Removing Export

Modify 2.12 [lex.key] paragraph 1 as follows:

The identifiers shown in Table 3 are reserved for use as keywords (that is, they are unconditionally treated as keywords in phase 7) except in an attribute-token (7.6.1) [Note: The export keyword is unused but is reserved for future use]:

Drafting note: There is some interest in retaining export as a keyword for later use with modules. If the committee does not want to go in that direction, the export keyword would be removed from the keyword table.

Modify 14 [temp] paragraph 1 as follows:

template-declaration:
exportopt template < template-parameter-list > declaration

Remove 14.1 [temp.export].

Remove 14.6.5 [temp.class.spec] paragraph 2:

When a partial specialization is used within the instantiation of an exported template, and the unspecialized template name is non-dependent in the exported template, a declaration of the partial specialization shall be declared before the definition of the exported template, in the translation unit containing that definition. A similar restriction applies to explicit specialization; see 14.8.

Modify 14.8.2 [temp.explicit] paragraph 4 as follows:

Otherwise, for an explicit instantiation definition the definition of a non-exported function template, a non-exported member function template, or a non-exported member function or static data member of a class template shall be present in every translation unit in which it is explicitly instantiated.

Remove 14.8.3 [temp.spec.expl] paragraph 8 and the example that follows it:

When a specialization for which an explicit specialization exists is used within the instantiation of an exported template, and the unspecialized template name is non-dependent in the exported template, a declaration of the explicit specialization shall be declared before the definition of the exported template, in the translation unit containing that definition.

End of document.