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, [^
|
| 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.
|
| 44 |
|
| 45 |
-
Each name from the
|
| 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
|
| 50 |
external linkage is reserved to the implementation for use as a function
|
| 51 |
-
signature with both `extern "C"` and `extern "C++"` linkage,
|
| 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
|
| 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
|
| 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 |
|