Attributes for namespaces and enumerators (original) (raw)

ISO/IEC JTC1 SC22 WG21
N4266 / CWG 1657 / EWG 113
Richard Smith
richard@metafoo.co.uk
2014-11-05

Wording

Change in 7.2 (dcl.enum) paragraph 1:

[...]

enumerator: identifier attribute-specifier-seqopt

The optional attribute-specifier-seq in the enum-head and the opaque-enum-declaration appertains to the enumeration; the attributes in that attribute-specifier-seq are thereafter considered attributes of the enumeration whenever it is named. [...]

Change in 7.2 (dcl.enum) paragraph 2:

[...] The identifiers in an_enumerator-list_ are declared as constants, and can appear wherever constants are required. An enumerator-definition with = gives the associated enumerator the value indicated by the constant-expression. If the first enumerator has no initializer, the value of the corresponding constant is zero. An enumerator-definition_without an initializer gives the enumerator the value obtained by increasing the value of the previous_enumerator by one. [ Example: … ]The optional attribute-specifier-seq in an enumerator appertains to that enumerator.

Change in 7.3 (namespace.def) paragraph 1:

[...]

original-namespace-definition: inline_opt_ namespace attribute-specifier-seqopt identifier { namespace-body } extension-namespace-definition: inline_opt_ namespace attribute-specifier-seqopt original-namespace-name { namespace-body } unnamed-namespace-definition: inline_opt_ namespace attribute-specifier-seqopt { namespace-body } namespace-body: declaration-seqopt

Add a new paragraph after 7.3 (namespace.def) paragraph 7:

The optional attribute-specifier-seq in an_original-namespace-definition_ or _extension-namespace-definition_appertains to the namespace being defined or extended.

Change in 7.3.1.1 (namespace.unnamed) paragraph 1:

An unnamed-namespace-definition behaves as if it were replaced by

inlineopt namespace unique { /* empty body */ } using namespace unique ; namespace attribute-specifier-seq unique { namespace-body }

where inline appears if and only if it appears in the_unnamed-namespace-definition_, all occurrences of unique in a translation unit are replaced by the same identifier, and this identifier differs from all other identifiers in the entire program. [Footnote: …]The optional attribute-specifier-seq in the _unnamed-namespace-definition_appertains to unique.

Change in 7.6.5 (dcl.attr.deprecated) paragraph 2:

The attribute may be applied to the declaration of a class, a typedef-name, a variable, a non-static data member, a function, a namespace, an enumeration, an enumerator, or a template specialization.