From Jason Turner

[reserved.names]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmpc82ivq3v/{from.md → to.md} +40 -20
tmp/tmpc82ivq3v/{from.md → to.md} RENAMED
@@ -8,57 +8,77 @@ The C++standard library reserves the following kinds of names:
8
 
9
  If a program declares or defines a name in a context where it is
10
  reserved, other than as explicitly allowed by this Clause, its behavior
11
  is undefined.
12
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13
  ##### Macro names <a id="macro.names">[[macro.names]]</a>
14
 
15
  A translation unit that includes a standard library header shall not
16
  `#define` or `#undef` names declared in any standard library header.
17
 
18
  A translation unit shall not `#define` or `#undef` names lexically
19
  identical to keywords, to the identifiers listed in Table 
20
  [[tab:identifiers.special]], or to the *attribute-token*s described in 
21
  [[dcl.attr]].
22
 
23
- ##### Global names <a id="global.names">[[global.names]]</a>
24
-
25
- Certain sets of names and function signatures are always reserved to the
26
- implementation:
27
-
28
- - Each name that contains a double underscore `__` or begins with an
29
- underscore followed by an uppercase letter ([[lex.key]]) is reserved
30
- to the implementation for any use.
31
- - Each name that begins with an underscore is reserved to the
32
- implementation for use as a name in the global namespace.
33
-
34
  ##### External linkage <a id="extern.names">[[extern.names]]</a>
35
 
36
  Each name declared as an object with external linkage in a header is
37
  reserved to the implementation to designate that library object with
38
- external linkage, [^23] both in namespace `std` and in the global
39
  namespace.
40
 
41
  Each global function signature declared with external linkage in a
42
  header is reserved to the implementation to designate that function
43
- signature with external linkage. [^24]
44
 
45
- Each name from the Standard C library declared with external linkage is
46
  reserved to the implementation for use as a name with `extern "C"`
47
- linkage, both in namespace std and in the global namespace.
48
 
49
- Each function signature from the Standard C library declared with
50
  external linkage is reserved to the implementation for use as a function
51
- signature with both `extern "C"` and `extern "C++"` linkage, [^25] or as
52
  a name of namespace scope in the global namespace.
53
 
54
  ##### Types <a id="extern.types">[[extern.types]]</a>
55
 
56
- For each type T from the Standard C library,[^26] the types `::T` and
57
  `std::T` are reserved to the implementation and, when defined, `::T`
58
  shall be identical to `std::T`.
59
 
60
  ##### User-defined literal suffixes <a id="usrlit.suffix">[[usrlit.suffix]]</a>
61
 
62
- Literal suffix identifiers that do not start with an underscore are
63
- reserved for future standardization.
64
 
 
8
 
9
  If a program declares or defines a name in a context where it is
10
  reserved, other than as explicitly allowed by this Clause, its behavior
11
  is undefined.
12
 
13
+ ##### Zombie names <a id="zombie.names">[[zombie.names]]</a>
14
+
15
+ In namespace `std`, the following names are reserved for previous
16
+ standardization:
17
+
18
+ - `auto_ptr`,
19
+ - `binary_function`,
20
+ - `bind1st`,
21
+ - `bind2nd`,
22
+ - `binder1st`,
23
+ - `binder2nd`,
24
+ - `const_mem_fun1_ref_t`,
25
+ - `const_mem_fun1_t`,
26
+ - `const_mem_fun_ref_t`,
27
+ - `const_mem_fun_t`,
28
+ - `get_unexpected`,
29
+ - `mem_fun1_ref_t`,
30
+ - `mem_fun1_t`,
31
+ - `mem_fun_ref_t`,
32
+ - `mem_fun_ref`,
33
+ - `mem_fun_t`,
34
+ - `mem_fun`,
35
+ - `pointer_to_binary_function`,
36
+ - `pointer_to_unary_function`,
37
+ - `ptr_fun`,
38
+ - `random_shuffle`,
39
+ - `set_unexpected`,
40
+ - `unary_function`,
41
+ - `unexpected`, and
42
+ - `unexpected_handler`.
43
+
44
  ##### Macro names <a id="macro.names">[[macro.names]]</a>
45
 
46
  A translation unit that includes a standard library header shall not
47
  `#define` or `#undef` names declared in any standard library header.
48
 
49
  A translation unit shall not `#define` or `#undef` names lexically
50
  identical to keywords, to the identifiers listed in Table 
51
  [[tab:identifiers.special]], or to the *attribute-token*s described in 
52
  [[dcl.attr]].
53
 
 
 
 
 
 
 
 
 
 
 
 
54
  ##### External linkage <a id="extern.names">[[extern.names]]</a>
55
 
56
  Each name declared as an object with external linkage in a header is
57
  reserved to the implementation to designate that library object with
58
+ external linkage, [^22] both in namespace `std` and in the global
59
  namespace.
60
 
61
  Each global function signature declared with external linkage in a
62
  header is reserved to the implementation to designate that function
63
+ signature with external linkage.[^23]
64
 
65
+ Each name from the C standard library declared with external linkage is
66
  reserved to the implementation for use as a name with `extern "C"`
67
+ linkage, both in namespace `std` and in the global namespace.
68
 
69
+ Each function signature from the C standard library declared with
70
  external linkage is reserved to the implementation for use as a function
71
+ signature with both `extern "C"` and `extern "C++"` linkage,[^24] or as
72
  a name of namespace scope in the global namespace.
73
 
74
  ##### Types <a id="extern.types">[[extern.types]]</a>
75
 
76
+ For each type T from the C standard library,[^25] the types `::T` and
77
  `std::T` are reserved to the implementation and, when defined, `::T`
78
  shall be identical to `std::T`.
79
 
80
  ##### User-defined literal suffixes <a id="usrlit.suffix">[[usrlit.suffix]]</a>
81
 
82
+ Literal suffix identifiers ([[over.literal]]) that do not start with an
83
+ underscore are reserved for future standardization.
84