From Jason Turner

[cpp.predefined]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmpreecw6gw/{from.md → to.md} +50 -24
tmp/tmpreecw6gw/{from.md → to.md} RENAMED
@@ -4,20 +4,20 @@ The following macro names shall be defined by the implementation:
4
 
5
  - **`__cplusplus`**
6
 
7
  The integer literal `202302L`.
8
 
9
- [*Note 1*: Future revisions of C++ will replace the value of this macro
10
- with a greater value. — *end note*]
11
 
12
- - **The names listed in [[cpp.predefined.ft]].**
13
 
14
  The macros defined in [[cpp.predefined.ft]] shall be defined to the
15
  corresponding integer literal.
16
 
17
- [*Note 2*: Future revisions of C++ might replace the values of these
18
- macros with greater values. — *end note*]
19
 
20
  - **`__DATE__`**
21
 
22
  The date of translation of the source file: a character string literal
23
  of the form `"Mmm dd yyyy"`, where the names of the months are the same
@@ -26,17 +26,30 @@ as those generated by the `asctime` function, and the first character of
26
  translation is not available, an *implementation-defined* valid date
27
  shall be supplied.
28
 
29
  - **`__FILE__`**
30
 
31
- The presumed name of the current source file (a character string
32
- literal).[^9]
 
 
 
33
 
34
  - **`__LINE__`**
35
 
36
- The presumed line number (within the current source file) of the current
37
- source line (an integer literal).[^10]
 
 
 
 
 
 
 
 
 
 
38
 
39
  - **`__STDC_HOSTED__`**
40
 
41
  The integer literal `1` if the implementation is a hosted implementation
42
  or the integer literal `0` if it is a freestanding implementation
@@ -46,37 +59,37 @@ or the integer literal `0` if it is a freestanding implementation
46
 
47
  An integer literal of type `std::size_t` whose value is the alignment
48
  guaranteed by a call to `operator new(std::size_t)` or
49
  `operator new[](std::size_t)`.
50
 
51
- [*Note 3*: Larger alignments will be passed to
52
  `operator new(std::size_t, std::align_val_t)`, etc.
53
  [[expr.new]]. — *end note*]
54
 
55
  - **`__STDCPP_FLOAT16_T__`**
56
 
57
  Defined as the integer literal `1` if and only if the implementation
58
- supports the ISO/IEC/IEEE 60559 floating-point interchange format
59
- binary16 as an extended floating-point type [[basic.extended.fp]].
60
 
61
  - **`__STDCPP_FLOAT32_T__`**
62
 
63
  Defined as the integer literal `1` if and only if the implementation
64
- supports the ISO/IEC/IEEE 60559 floating-point interchange format
65
- binary32 as an extended floating-point type.
66
 
67
  - **`__STDCPP_FLOAT64_T__`**
68
 
69
  Defined as the integer literal `1` if and only if the implementation
70
- supports the ISO/IEC/IEEE 60559 floating-point interchange format
71
- binary64 as an extended floating-point type.
72
 
73
  - **`__STDCPP_FLOAT128_T__`**
74
 
75
  Defined as the integer literal `1` if and only if the implementation
76
- supports the ISO/IEC/IEEE 60559 floating-point interchange format
77
- binary128 as an extended floating-point type.
78
 
79
  - **`__STDCPP_BFLOAT16_T__`**
80
 
81
  Defined as the integer literal `1` if and only if the implementation
82
  supports an extended floating-point type with the properties of the
@@ -104,30 +117,36 @@ function. If the time of translation is not available, an
104
  | `__cpp_binary_literals` | `201304L` |
105
  | `__cpp_capture_star_this` | `201603L` |
106
  | `__cpp_char8_t` | `202207L` |
107
  | `__cpp_concepts` | `202002L` |
108
  | `__cpp_conditional_explicit` | `201806L` |
109
- | `__cpp_constexpr` | `202211L` |
 
110
  | `__cpp_constexpr_dynamic_alloc` | `201907L` |
 
111
  | `__cpp_constexpr_in_decltype` | `201711L` |
112
- | `__cpp_consteval` | `202211L` |
113
  | `__cpp_constinit` | `201907L` |
 
114
  | `__cpp_decltype` | `200707L` |
115
  | `__cpp_decltype_auto` | `201304L` |
116
- | `__cpp_deduction_guides` | `201907L` |
117
  | `__cpp_delegating_constructors` | `200604L` |
 
118
  | `__cpp_designated_initializers` | `201707L` |
119
  | `__cpp_enumerator_attributes` | `201411L` |
 
120
  | `__cpp_explicit_this_parameter` | `202110L` |
121
  | `__cpp_fold_expressions` | `201603L` |
122
  | `__cpp_generic_lambdas` | `201707L` |
123
  | `__cpp_guaranteed_copy_elision` | `201606L` |
124
  | `__cpp_hex_float` | `201603L` |
125
  | `__cpp_if_consteval` | `202106L` |
126
  | `__cpp_if_constexpr` | `201606L` |
127
  | `__cpp_impl_coroutine` | `201902L` |
128
  | `__cpp_impl_destroying_delete` | `201806L` |
 
129
  | `__cpp_impl_three_way_comparison` | `201907L` |
130
  | `__cpp_implicit_move` | `202207L` |
131
  | `__cpp_inheriting_constructors` | `201511L` |
132
  | `__cpp_init_captures` | `201803L` |
133
  | `__cpp_initializer_lists` | `200806L` |
@@ -139,27 +158,34 @@ function. If the time of translation is not available, an
139
  | `__cpp_namespace_attributes` | `201411L` |
140
  | `__cpp_noexcept_function_type` | `201510L` |
141
  | `__cpp_nontype_template_args` | `201911L` |
142
  | `__cpp_nontype_template_parameter_auto` | `201606L` |
143
  | `__cpp_nsdmi` | `200809L` |
 
 
 
144
  | `__cpp_range_based_for` | `202211L` |
145
  | `__cpp_raw_strings` | `200710L` |
146
  | `__cpp_ref_qualifiers` | `200710L` |
147
  | `__cpp_return_type_deduction` | `201304L` |
148
  | `__cpp_rvalue_references` | `200610L` |
149
  | `__cpp_size_t_suffix` | `202011L` |
150
  | `__cpp_sized_deallocation` | `201309L` |
151
- | `__cpp_static_assert` | `201411L` |
152
  | `__cpp_static_call_operator` | `202207L` |
153
- | `__cpp_structured_bindings` | `201606L` |
 
154
  | `__cpp_template_template_args` | `201611L` |
155
  | `__cpp_threadsafe_static_init` | `200806L` |
 
 
156
  | `__cpp_unicode_characters` | `200704L` |
157
  | `__cpp_unicode_literals` | `200710L` |
158
  | `__cpp_user_defined_literals` | `200809L` |
159
  | `__cpp_using_enum` | `201907L` |
160
  | `__cpp_variable_templates` | `201304L` |
 
161
  | `__cpp_variadic_templates` | `200704L` |
162
  | `__cpp_variadic_using` | `201611L` |
163
 
164
 
165
  The following macro names are conditionally defined by the
@@ -196,9 +222,9 @@ can have more than one thread of execution [[intro.multithread]].
196
  The values of the predefined macros (except for `__FILE__` and
197
  `__LINE__`) remain constant throughout the translation unit.
198
 
199
  If any of the pre-defined macro names in this subclause, or the
200
  identifier `defined`, is the subject of a `#define` or a `#undef`
201
- preprocessing directive, the behavior is undefined. Any other predefined
202
  macro names shall begin with a leading underscore followed by an
203
  uppercase letter or a second underscore.
204
 
 
4
 
5
  - **`__cplusplus`**
6
 
7
  The integer literal `202302L`.
8
 
9
+ [*Note 1*: Future revisions of this document will replace the value of
10
+ this macro with a greater value. — *end note*]
11
 
12
+ - **The macro names listed in [[cpp.predefined.ft]].**
13
 
14
  The macros defined in [[cpp.predefined.ft]] shall be defined to the
15
  corresponding integer literal.
16
 
17
+ [*Note 2*: Future revisions of this document might replace the values
18
+ of these macros with greater values. — *end note*]
19
 
20
  - **`__DATE__`**
21
 
22
  The date of translation of the source file: a character string literal
23
  of the form `"Mmm dd yyyy"`, where the names of the months are the same
 
26
  translation is not available, an *implementation-defined* valid date
27
  shall be supplied.
28
 
29
  - **`__FILE__`**
30
 
31
+ A character string literal representing the presumed name of the current
32
+ source file.
33
+
34
+ [*Note 3*: The presumed source file name can be changed by the `#line`
35
+ directive [[cpp.line]]. — *end note*]
36
 
37
  - **`__LINE__`**
38
 
39
+ An integer literal representing the presumed line number of the current
40
+ source line within the current source file.
41
+
42
+ [*Note 4*: The presumed line number can be changed by the `#line`
43
+ directive [[cpp.line]]. — *end note*]
44
+
45
+ - **`__STDC_EMBED_NOT_FOUND__, __STDC_EMBED_FOUND__, and __STDC_EMBED_EMPTY__`**
46
+
47
+ The integer literals `0`, `1`, and `2`, respectively.
48
+
49
+ [*Note 5*: These represent values replaced from
50
+ \*has-embed-expression\*s [[cpp.cond]]. — *end note*]
51
 
52
  - **`__STDC_HOSTED__`**
53
 
54
  The integer literal `1` if the implementation is a hosted implementation
55
  or the integer literal `0` if it is a freestanding implementation
 
59
 
60
  An integer literal of type `std::size_t` whose value is the alignment
61
  guaranteed by a call to `operator new(std::size_t)` or
62
  `operator new[](std::size_t)`.
63
 
64
+ [*Note 6*: Larger alignments will be passed to
65
  `operator new(std::size_t, std::align_val_t)`, etc.
66
  [[expr.new]]. — *end note*]
67
 
68
  - **`__STDCPP_FLOAT16_T__`**
69
 
70
  Defined as the integer literal `1` if and only if the implementation
71
+ supports the ISO/IEC 60559 floating-point interchange format binary16 as
72
+ an extended floating-point type [[basic.extended.fp]].
73
 
74
  - **`__STDCPP_FLOAT32_T__`**
75
 
76
  Defined as the integer literal `1` if and only if the implementation
77
+ supports the ISO/IEC 60559 floating-point interchange format binary32 as
78
+ an extended floating-point type.
79
 
80
  - **`__STDCPP_FLOAT64_T__`**
81
 
82
  Defined as the integer literal `1` if and only if the implementation
83
+ supports the ISO/IEC 60559 floating-point interchange format binary64 as
84
+ an extended floating-point type.
85
 
86
  - **`__STDCPP_FLOAT128_T__`**
87
 
88
  Defined as the integer literal `1` if and only if the implementation
89
+ supports the ISO/IEC 60559 floating-point interchange format binary128
90
+ as an extended floating-point type.
91
 
92
  - **`__STDCPP_BFLOAT16_T__`**
93
 
94
  Defined as the integer literal `1` if and only if the implementation
95
  supports an extended floating-point type with the properties of the
 
117
  | `__cpp_binary_literals` | `201304L` |
118
  | `__cpp_capture_star_this` | `201603L` |
119
  | `__cpp_char8_t` | `202207L` |
120
  | `__cpp_concepts` | `202002L` |
121
  | `__cpp_conditional_explicit` | `201806L` |
122
+ | `__cpp_consteval` | `202211L` |
123
+ | `__cpp_constexpr` | `202406L` |
124
  | `__cpp_constexpr_dynamic_alloc` | `201907L` |
125
+ | `__cpp_constexpr_exceptions` | `202411L` |
126
  | `__cpp_constexpr_in_decltype` | `201711L` |
127
+ | `__cpp_constexpr_virtual_inheritance` | `202506L` |
128
  | `__cpp_constinit` | `201907L` |
129
+ | `__cpp_contracts` | `202502L` |
130
  | `__cpp_decltype` | `200707L` |
131
  | `__cpp_decltype_auto` | `201304L` |
132
+ | `__cpp_deduction_guides` | `202207L` |
133
  | `__cpp_delegating_constructors` | `200604L` |
134
+ | `__cpp_deleted_function` | `202403L` |
135
  | `__cpp_designated_initializers` | `201707L` |
136
  | `__cpp_enumerator_attributes` | `201411L` |
137
+ | `__cpp_expansion_statements` | `202506L` |
138
  | `__cpp_explicit_this_parameter` | `202110L` |
139
  | `__cpp_fold_expressions` | `201603L` |
140
  | `__cpp_generic_lambdas` | `201707L` |
141
  | `__cpp_guaranteed_copy_elision` | `201606L` |
142
  | `__cpp_hex_float` | `201603L` |
143
  | `__cpp_if_consteval` | `202106L` |
144
  | `__cpp_if_constexpr` | `201606L` |
145
  | `__cpp_impl_coroutine` | `201902L` |
146
  | `__cpp_impl_destroying_delete` | `201806L` |
147
+ | `__cpp_impl_reflection` | `202506L` |
148
  | `__cpp_impl_three_way_comparison` | `201907L` |
149
  | `__cpp_implicit_move` | `202207L` |
150
  | `__cpp_inheriting_constructors` | `201511L` |
151
  | `__cpp_init_captures` | `201803L` |
152
  | `__cpp_initializer_lists` | `200806L` |
 
158
  | `__cpp_namespace_attributes` | `201411L` |
159
  | `__cpp_noexcept_function_type` | `201510L` |
160
  | `__cpp_nontype_template_args` | `201911L` |
161
  | `__cpp_nontype_template_parameter_auto` | `201606L` |
162
  | `__cpp_nsdmi` | `200809L` |
163
+ | `__cpp_pack_indexing` | `202311L` |
164
+ | `__cpp_placeholder_variables` | `202306L` |
165
+ | `__cpp_pp_embed` | `202502L` |
166
  | `__cpp_range_based_for` | `202211L` |
167
  | `__cpp_raw_strings` | `200710L` |
168
  | `__cpp_ref_qualifiers` | `200710L` |
169
  | `__cpp_return_type_deduction` | `201304L` |
170
  | `__cpp_rvalue_references` | `200610L` |
171
  | `__cpp_size_t_suffix` | `202011L` |
172
  | `__cpp_sized_deallocation` | `201309L` |
173
+ | `__cpp_static_assert` | `202306L` |
174
  | `__cpp_static_call_operator` | `202207L` |
175
+ | `__cpp_structured_bindings` | `202411L` |
176
+ | `__cpp_template_parameters` | `202502L` |
177
  | `__cpp_template_template_args` | `201611L` |
178
  | `__cpp_threadsafe_static_init` | `200806L` |
179
+ | `__cpp_trivial_relocatability` | `202502L` |
180
+ | `__cpp_trivial_union` | `202502L` |
181
  | `__cpp_unicode_characters` | `200704L` |
182
  | `__cpp_unicode_literals` | `200710L` |
183
  | `__cpp_user_defined_literals` | `200809L` |
184
  | `__cpp_using_enum` | `201907L` |
185
  | `__cpp_variable_templates` | `201304L` |
186
+ | `__cpp_variadic_friend` | `202403L` |
187
  | `__cpp_variadic_templates` | `200704L` |
188
  | `__cpp_variadic_using` | `201611L` |
189
 
190
 
191
  The following macro names are conditionally defined by the
 
222
  The values of the predefined macros (except for `__FILE__` and
223
  `__LINE__`) remain constant throughout the translation unit.
224
 
225
  If any of the pre-defined macro names in this subclause, or the
226
  identifier `defined`, is the subject of a `#define` or a `#undef`
227
+ preprocessing directive, the program is ill-formed. Any other predefined
228
  macro names shall begin with a leading underscore followed by an
229
  uppercase letter or a second underscore.
230