This is an unofficial snapshot of the ISO/IEC JTC1 SC22 WG21 Core Issues List revision 112e. See for the official list.


1882. Reserved names without library use

Section: _N4140_.  [global.names]     Status: CD4     Submitter: Mike Miller     Date: 2014-02-26

[Moved to DR at the November, 2014 meeting.]

The section of the Standard reserving names that begin with two underscores or an underscore and a capital letter, _N4140_. [global.names], applies only to “programs that use the facilities of the C++ standard library” ( [constraints.overview]). However, implementations rely on this restriction for mangling, even when no standard library facilities are used. Should this requirement be moved to the core language section?

(There is a related issue with user-defined literal suffixes, [usrlit.suffix]. However, these are already mentioned normatively in the core language section, so it could be argued that the question of library usage does not apply.)

Proposed resolution (October, 2014):

  1. Change 5.10 [] paragraph 3 as follows:

  2. In addition, some identifiers are reserved for use by C++ implementations and standard libraries (_N4140_. [global.names]) and shall not be used otherwise; no diagnostic is required.

  3. Change the footnote in 9.5.1 [dcl.fct.def.general] paragraph 8 as follows:

  4. [Footnote: Implementations are permitted to provide additional predefined variables with names that are reserved to the implementation (_N4140_. [global.names] 5.10 []). If a predefined variable is not odr-used (6.3 [basic.def.odr]), its string value need not be present in the program image. —end footnote]
  5. Change the example in 12.6 [over.literal] paragraph 8 as follows:

  6.   double operator""_Bq(double);  // OK: does not use the reserved name identifier _Bq (_N4140_. [global.names] 5.10 [])
      double operator"" _Bq(double); // uses the reserved name identifier _Bq (_N4140_. [global.names] 5.10 [])
  7. Delete _N4140_. [global.names]:

  8. Certain sets of names and function signatures are always reserved to the implementation: