From Jason Turner

[diff.library]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmp2ze6ob9h/{from.md → to.md} +135 -142
tmp/tmp2ze6ob9h/{from.md → to.md} RENAMED
@@ -1,242 +1,211 @@
1
  ## C standard library <a id="diff.library">[[diff.library]]</a>
2
 
3
- This subclause summarizes the contents of the C++standard library
4
- included from the Standard C library. It also summarizes the explicit
5
- changes in definitions, declarations, or behavior from the Standard C
6
- library noted in other subclauses ([[headers]], [[support.types]],
7
- [[c.strings]]).
8
-
9
- The C++standard library provides 57 standard macros from the C library,
10
- as shown in Table  [[tab:diff.standard.macros]].
11
-
12
- The header names (enclosed in `<` and `>`) indicate that the macro may
13
- be defined in more than one header. All such definitions are equivalent
14
- ([[basic.def.odr]]).
15
-
16
- **Table: Standard macros** <a id="tab:diff.standard.macros">[tab:diff.standard.macros]</a>
17
-
18
- | | | | | |
19
- | ---------------- | ---------------- | --------------- | --------- | ---------------- |
20
- | `BUFSIZ` | `LC_ALL` | `NULL <ctime>` | `SIGSEGV` | `va_start` |
21
- | `CLOCKS_PER_SEC` | `LC_COLLATE` | `NULL <cwchar>` | `SIGTERM` | `WCHAR_MAX` |
22
- | `EDOM` | `LC_CTYPE` | `offsetof` | `SIG_DFL` | `WCHAR_MIN` |
23
- | `EILSEQ` | `LC_MONETARY` | `RAND_MAX` | `SIG_ERR` | `WEOF <cwchar>` |
24
- | `EOF` | `LC_NUMERIC` | `SEEK_CUR` | `SIG_IGN` | `WEOF <cwctype>` |
25
- | `ERANGE` | `LC_TIME` | `SEEK_END` | `stderr` | `_IOFBF` |
26
- | `errno` | `L_tmpnam` | `SEEK_SET` | `stdin` | `_IOLBF` |
27
- | `EXIT_FAILURE` | `MB_CUR_MAX` | `setjmp` | `stdout` | `_IONBF` |
28
- | `EXIT_SUCCESS` | `NULL <clocale>` | `SIGABRT` | `TMP_MAX` | |
29
- | `FILENAME_MAX` | `NULL <cstddef>` | `SIGFPE` | `va_arg` | |
30
- | `FOPEN_MAX` | `NULL <cstdlib>` | `SIGILL` | `va_copy` | |
31
-
32
-
33
- The C++standard library provides 57 standard values from the C library,
34
- as shown in Table  [[tab:diff.standard.values]].
35
-
36
- **Table: Standard values** <a id="tab:diff.standard.values">[tab:diff.standard.values]</a>
37
-
38
- | | | | |
39
- | ---------------- | ---------------- | ----------------- | ----------- |
40
- | `CHAR_MAX` | `FLT_EPSILON` | `LDBL_DIG` | `SCHAR_MAX` |
41
- | `CHAR_MIN` | `FLT_MANT_DIG` | `LDBL_EPSILON` | `SCHAR_MIN` |
42
- | `DBL_DIG` | `FLT_MAX` | `LDBL_MANT_DIG` | `SHRT_MAX` |
43
- | `DBL_EPSILON` | `FLT_MAX_10_EXP` | `LDBL_MAX` | `SHRT_MIN` |
44
- | `DBL_MANT_DIG` | `FLT_MAX_EXP` | `LDBL_MAX_10_EXP` | `UCHAR_MAX` |
45
- | `DBL_MAX` | `FLT_MIN` | `LDBL_MAX_EXP` | `UINT_MAX` |
46
- | `DBL_MAX_10_EXP` | `FLT_MIN_10_EXP` | `LDBL_MIN` | `ULONG_MAX` |
47
- | `DBL_MAX_EXP` | `FLT_MIN_EXP` | `LDBL_MIN_10_EXP` | `USHRT_MAX` |
48
- | `DBL_MIN` | `FLT_RADIX` | `LDBL_MIN_EXP` | |
49
- | `DBL_MIN_10_EXP` | `FLT_ROUNDS` | `LONG_MAX` | |
50
- | `DBL_MIN_EXP` | `INT_MAX` | `LONG_MIN` | |
51
-
52
-
53
- The C++standard library provides 20 standard types from the C library,
54
- as shown in Table  [[tab:diff.standard.types]].
55
-
56
- **Table: Standard types** <a id="tab:diff.standard.types">[tab:diff.standard.types]</a>
57
-
58
- | | | | |
59
- | --------- | ------------------ | ------------------ | ------------------ |
60
- | `div_t` | `mbstate_t` | `size_t <cstdlib>` | `wctrans_t` |
61
- | `FILE` | `ptrdiff_t` | `size_t <cstring>` | `wctype_t` |
62
- | `fpos_t` | `sig_atomic_t` | `size_t <ctime>` | `wint_t <cwchar>` |
63
- | `jmp_buf` | `size_t <cstddef>` | `time_t` | `wint_t <cwctype>` |
64
-
65
-
66
- The C++standard library provides 2 standard `struct`s from the C
67
- library, as shown in Table  [[tab:diff.standard.structs]].
68
-
69
- **Table: Standard structs** <a id="tab:diff.standard.structs">[tab:diff.standard.structs]</a>
70
-
71
-
72
-
73
- The C++standard library provides 209 standard functions from the C
74
- library, as shown in Table  [[tab:diff.standard.functions]].
75
-
76
- **Table: Standard functions** <a id="tab:diff.standard.functions">[tab:diff.standard.functions]</a>
77
-
78
- | | | | | | |
79
- | ---------- | ---------- | ------------ | ----------- | ----------- | ----------- |
80
- | `abs` | `fopen` | `iswalpha` | `perror` | `strncat` | `wcschr` |
81
- | `acos` | `fprintf` | `iswcntrl` | `pow` | `strncmp` | `wcscmp` |
82
- | `asctime` | `fputc` | `iswctype` | `printf` | `strncpy` | `wcscoll` |
83
- | `asin` | `fputs` | `iswdigit` | `putc` | `strpbrk` | `wcscpy` |
84
- | `atan` | `fputwc` | `iswgraph` | `putchar` | `strrchr` | `wcscspn` |
85
- | `atan2` | `fputws` | `iswlower` | `puts` | `strspn` | `wcsftime` |
86
- | `atexit` | `fread` | `iswprint` | `putwc` | `strstr` | `wcslen` |
87
- | `atof` | `free` | `iswpunct` | `putwchar` | `strtod` | `wcsncat` |
88
- | `atoi` | `freopen` | `iswspace` | `qsort` | `strtok` | `wcsncmp` |
89
- | `atol` | `frexp` | `iswupper` | `raise` | `strtol` | `wcsncpy` |
90
- | `bsearch` | `fscanf` | `iswxdigit` | `rand` | `strtoul` | `wcspbrk` |
91
- | `btowc` | `fseek` | `isxdigit` | `realloc` | `strxfrm` | `wcsrchr` |
92
- | `calloc` | `fsetpos` | `labs` | `remove` | `swprintf` | `wcsrtombs` |
93
- | `ceil` | `ftell` | `ldexp` | `rename` | `swscanf` | `wcsspn` |
94
- | `clearerr` | `fwide` | `ldiv` | `rewind` | `system` | `wcsstr` |
95
- | `clock` | `fwprintf` | `localeconv` | `scanf` | `tan` | `wcstod` |
96
- | `cos` | `fwrite` | `localtime` | `setbuf` | `tanh` | `wcstok` |
97
- | `cosh` | `fwscanf` | `log` | `setlocale` | `time` | `wcstol` |
98
- | `ctime` | `getc` | `log10` | `setvbuf` | `tmpfile` | `wcstombs` |
99
- | `difftime` | `getchar` | `longjmp` | `signal` | `tmpnam` | `wcstoul` |
100
- | `div` | `getenv` | `malloc` | `sin` | `tolower` | `wcsxfrm` |
101
- | `exit` | `getwc` | `mblen` | `sinh` | `toupper` | `wctob` |
102
- | `exp` | `getwchar` | `mbrlen` | `sprintf` | `towctrans` | `wctomb` |
103
- | `fabs` | `gmtime` | `mbrtowc` | `sqrt` | `towlower` | `wctrans` |
104
- | `fclose` | `isalnum` | `mbsinit` | `srand` | `towupper` | `wctype` |
105
- | `feof` | `isalpha` | `mbsrtowcs` | `sscanf` | `ungetc` | `wmemchr` |
106
- | `ferror` | `iscntrl` | `mbstowcs` | `strcat` | `ungetwc` | `wmemcmp` |
107
- | `fflush` | `isdigit` | `mbtowc` | `strchr` | `vfprintf` | `wmemcpy` |
108
- | `fgetc` | `isgraph` | `memchr` | `strcmp` | `vfwprintf` | `wmemmove` |
109
- | `fgetpos` | `islower` | `memcmp` | `strcoll` | `vprintf` | `wmemset` |
110
- | `fgets` | `isprint` | `memcpy` | `strcpy` | `vsprintf` | `wprintf` |
111
- | `fgetwc` | `ispunct` | `memmove` | `strcspn` | `vswprintf` | `wscanf` |
112
- | `fgetws` | `isspace` | `memset` | `strerror` | `vwprintf` | |
113
- | `floor` | `isupper` | `mktime` | `strftime` | `wcrtomb` | |
114
-
115
 
116
  ### Modifications to headers <a id="diff.mods.to.headers">[[diff.mods.to.headers]]</a>
117
 
118
- For compatibility with the Standard C library, the C++standard library
119
  provides the C headers enumerated in  [[depr.c.headers]], but their use
120
  is deprecated in C++.
121
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
122
  ### Modifications to definitions <a id="diff.mods.to.definitions">[[diff.mods.to.definitions]]</a>
123
 
124
  #### Types `char16_t` and `char32_t` <a id="diff.char16">[[diff.char16]]</a>
125
 
126
  The types `char16_t` and `char32_t` are distinct types rather than
127
- typedefs to existing integral types.
 
 
 
128
 
129
  #### Type `wchar_t` <a id="diff.wchar.t">[[diff.wchar.t]]</a>
130
 
131
- `wchar_t`
 
 
 
 
132
 
133
- is a keyword in this International Standard ([[lex.key]]). It does not
134
- appear as a type name defined in any of `<cstddef>`, `<cstdlib>`, or
135
- `<cwchar>` ([[c.strings]]).
 
 
136
 
137
  #### Header `<iso646.h>` <a id="diff.header.iso646.h">[[diff.header.iso646.h]]</a>
138
 
139
  The tokens `and`, `and_eq`, `bitand`, `bitor`, `compl`, `not_eq`, `not`,
140
  `or`, `or_eq`, `xor`, and `xor_eq` are keywords in this International
141
  Standard ([[lex.key]]). They do not appear as macro names defined in
142
  `<ciso646>`.
143
 
 
 
 
 
 
 
 
 
 
 
 
 
144
  #### Macro `NULL` <a id="diff.null">[[diff.null]]</a>
145
 
146
- The macro `NULL`, defined in any of `<clocale>`, `<cstddef>`,
147
- `<cstdio>`, `<cstdlib>`, `<cstring>`, `<ctime>`, or `<cwchar>`, is an
148
- implementation-defined C++null pointer constant in this International
 
 
149
  Standard ([[support.types]]).
150
 
151
  ### Modifications to declarations <a id="diff.mods.to.declarations">[[diff.mods.to.declarations]]</a>
152
 
153
- Header `<cstring>`: The following functions have different declarations:
 
154
 
155
  - `strchr`
156
  - `strpbrk`
157
  - `strrchr`
158
  - `strstr`
159
  - `memchr`
160
 
161
- [[c.strings]] describes the changes.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
162
 
163
  ### Modifications to behavior <a id="diff.mods.to.behavior">[[diff.mods.to.behavior]]</a>
164
 
165
- Header `<cstdlib>`: The following functions have different behavior:
 
166
 
167
  - `atexit`
168
  - `exit`
169
  - `abort`
170
 
171
- [[support.start.term]] describes the changes.
172
 
173
- Header `<csetjmp>`: The following functions have different behavior:
 
174
 
175
  - `longjmp`
176
 
177
- [[support.runtime]] describes the changes.
178
 
179
  #### Macro `offsetof(type, member-designator)` <a id="diff.offsetof">[[diff.offsetof]]</a>
180
 
181
- The macro `offsetof`, defined in `<cstddef>`, accepts a restricted set
182
- of `type` arguments in this International Standard. [[support.types]]
183
- describes the change.
184
 
185
  #### Memory allocation functions <a id="diff.malloc">[[diff.malloc]]</a>
186
 
187
- The functions `calloc`, `malloc`, and `realloc` are restricted in this
188
- International Standard. [[c.malloc]] describes the changes.
 
189
 
190
  <!-- Link reference definitions -->
191
  [algorithms]: algorithms.md#algorithms
192
  [algorithms.general]: algorithms.md#algorithms.general
193
  [arithmetic.operations]: utilities.md#arithmetic.operations
194
  [associative.reqmts]: containers.md#associative.reqmts
195
  [basic]: basic.md#basic
196
  [basic.def]: basic.md#basic.def
197
- [basic.def.odr]: basic.md#basic.def.odr
198
  [basic.link]: basic.md#basic.link
199
  [basic.scope]: basic.md#basic.scope
200
- [basic.start]: basic.md#basic.start
201
  [basic.stc.dynamic]: basic.md#basic.stc.dynamic
202
  [basic.stc.dynamic.deallocation]: basic.md#basic.stc.dynamic.deallocation
 
203
  [basic.types]: basic.md#basic.types
204
  [bitwise.operations]: utilities.md#bitwise.operations
205
  [c.files]: input.md#c.files
 
206
  [c.malloc]: utilities.md#c.malloc
207
- [c.strings]: strings.md#c.strings
208
  [class]: class.md#class
209
  [class.bit]: class.md#class.bit
210
  [class.copy]: special.md#class.copy
211
  [class.ctor]: special.md#class.ctor
212
  [class.dtor]: special.md#class.dtor
 
213
  [class.name]: class.md#class.name
214
  [class.nest]: class.md#class.nest
215
  [class.nested.type]: class.md#class.nested.type
216
  [comparisons]: utilities.md#comparisons
217
  [complex.numbers]: numerics.md#complex.numbers
218
  [container.requirements]: containers.md#container.requirements
219
  [containers]: containers.md#containers
220
  [conv]: conv.md#conv
 
 
 
221
  [conv.ptr]: conv.md#conv.ptr
222
  [cpp]: cpp.md#cpp
223
  [cpp.predefined]: cpp.md#cpp.predefined
 
 
 
 
 
 
 
 
224
  [dcl.constexpr]: dcl.md#dcl.constexpr
225
  [dcl.dcl]: dcl.md#dcl.dcl
226
  [dcl.decl]: dcl.md#dcl.decl
227
  [dcl.enum]: dcl.md#dcl.enum
228
  [dcl.fct]: dcl.md#dcl.fct
229
  [dcl.fct.def]: dcl.md#dcl.fct.def
 
230
  [dcl.init.list]: dcl.md#dcl.init.list
231
  [dcl.init.string]: dcl.md#dcl.init.string
232
  [dcl.spec]: dcl.md#dcl.spec
233
  [dcl.spec.auto]: dcl.md#dcl.spec.auto
234
  [dcl.stc]: dcl.md#dcl.stc
235
  [dcl.type]: dcl.md#dcl.type
236
  [dcl.typedef]: dcl.md#dcl.typedef
 
237
  [depr.c.headers]: future.md#depr.c.headers
 
 
 
 
 
238
  [diagnostics]: diagnostics.md#diagnostics
239
  [diff]: #diff
240
  [diff.basic]: #diff.basic
241
  [diff.char16]: #diff.char16
242
  [diff.class]: #diff.class
@@ -260,16 +229,35 @@ International Standard. [[c.malloc]] describes the changes.
260
  [diff.cpp03.temp]: #diff.cpp03.temp
261
  [diff.cpp03.utilities]: #diff.cpp03.utilities
262
  [diff.cpp11]: #diff.cpp11
263
  [diff.cpp11.basic]: #diff.cpp11.basic
264
  [diff.cpp11.dcl.dcl]: #diff.cpp11.dcl.dcl
 
 
265
  [diff.cpp11.input.output]: #diff.cpp11.input.output
266
  [diff.cpp11.lex]: #diff.cpp11.lex
 
 
 
 
 
 
 
 
 
 
 
 
 
 
267
  [diff.dcl]: #diff.dcl
268
  [diff.decl]: #diff.decl
269
  [diff.expr]: #diff.expr
 
270
  [diff.header.iso646.h]: #diff.header.iso646.h
 
 
271
  [diff.iso]: #diff.iso
272
  [diff.lex]: #diff.lex
273
  [diff.library]: #diff.library
274
  [diff.malloc]: #diff.malloc
275
  [diff.mods.to.behavior]: #diff.mods.to.behavior
@@ -280,19 +268,26 @@ International Standard. [[c.malloc]] describes the changes.
280
  [diff.offsetof]: #diff.offsetof
281
  [diff.special]: #diff.special
282
  [diff.stat]: #diff.stat
283
  [diff.wchar.t]: #diff.wchar.t
284
  [errno]: diagnostics.md#errno
 
 
285
  [expr]: expr.md#expr
286
  [expr.ass]: expr.md#expr.ass
287
  [expr.call]: expr.md#expr.call
288
  [expr.cast]: expr.md#expr.cast
289
  [expr.comma]: expr.md#expr.comma
290
  [expr.cond]: expr.md#expr.cond
 
 
291
  [expr.mul]: expr.md#expr.mul
292
  [expr.new]: expr.md#expr.new
 
 
293
  [expr.sizeof]: expr.md#expr.sizeof
 
294
  [headers]: library.md#headers
295
  [input.output]: input.md#input.output
296
  [ios.base]: input.md#ios.base
297
  [ios::failure]: input.md#ios::failure
298
  [iostate.flags]: input.md#iostate.flags
@@ -300,17 +295,18 @@ International Standard. [[c.malloc]] describes the changes.
300
  [language.support]: language.md#language.support
301
  [lex]: lex.md#lex
302
  [lex.ccon]: lex.md#lex.ccon
303
  [lex.icon]: lex.md#lex.icon
304
  [lex.key]: lex.md#lex.key
 
305
  [lex.ppnumber]: lex.md#lex.ppnumber
306
  [lex.pptoken]: lex.md#lex.pptoken
307
  [lex.string]: lex.md#lex.string
308
  [library]: library.md#library
309
  [logical.operations]: utilities.md#logical.operations
 
310
  [namespace.posix]: library.md#namespace.posix
311
- [negators]: utilities.md#negators
312
  [new.delete.single]: language.md#new.delete.single
313
  [numerics]: numerics.md#numerics
314
  [ostream::sentry]: input.md#ostream::sentry
315
  [refwrap]: utilities.md#refwrap
316
  [res.on.macro.definitions]: library.md#res.on.macro.definitions
@@ -321,22 +317,19 @@ International Standard. [[c.malloc]] describes the changes.
321
  [stmt.stmt]: stmt.md#stmt.stmt
322
  [stmt.switch]: stmt.md#stmt.switch
323
  [string.classes]: strings.md#string.classes
324
  [string.require]: strings.md#string.require
325
  [strings]: strings.md#strings
326
- [support.runtime]: language.md#support.runtime
327
  [support.start.term]: language.md#support.start.term
328
  [support.types]: language.md#support.types
 
329
  [swappable.requirements]: library.md#swappable.requirements
330
- [tab:diff.standard.functions]: #tab:diff.standard.functions
331
- [tab:diff.standard.macros]: #tab:diff.standard.macros
332
- [tab:diff.standard.structs]: #tab:diff.standard.structs
333
- [tab:diff.standard.types]: #tab:diff.standard.types
334
- [tab:diff.standard.values]: #tab:diff.standard.values
335
  [tab:keywords]: lex.md#tab:keywords
336
  [temp]: temp.md#temp
337
  [temp.arg]: temp.md#temp.arg
 
338
  [temp.dep.candidate]: temp.md#temp.dep.candidate
339
  [temp.param]: temp.md#temp.param
340
  [thread]: thread.md#thread
341
  [util.dynamic.safety]: utilities.md#util.dynamic.safety
 
342
  [utilities]: utilities.md#utilities
 
1
  ## C standard library <a id="diff.library">[[diff.library]]</a>
2
 
3
+ This subclause summarizes the explicit changes in headers, definitions,
4
+ declarations, or behavior between the C standard library in the C
5
+ standard and the parts of the C++standard library that were included
6
+ from the C standard library.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7
 
8
  ### Modifications to headers <a id="diff.mods.to.headers">[[diff.mods.to.headers]]</a>
9
 
10
+ For compatibility with the C standard library, the C++standard library
11
  provides the C headers enumerated in  [[depr.c.headers]], but their use
12
  is deprecated in C++.
13
 
14
+ There are no C++headers for the C headers `<stdatomic.h>`,
15
+ `<stdnoreturn.h>`, and `<threads.h>`, nor are the C headers themselves
16
+ part of C++.
17
+
18
+ The C++headers `<ccomplex>` ([[depr.ccomplex.syn]]) and `<ctgmath>` (
19
+ [[depr.ctgmath.syn]]), as well as their corresponding C headers
20
+ `<complex.h>` and `<tgmath.h>`, do not contain any of the content from
21
+ the C standard library and instead merely include other headers from the
22
+ C++standard library.
23
+
24
+ The headers `<ciso646>`, `<cstdalign>` ([[depr.cstdalign.syn]]), and
25
+ `<cstdbool>` ([[depr.cstdbool.syn]]) are meaningless in C++. Use of the
26
+ C++headers `<ccomplex>`, `<cstdalign>`, `<cstdbool>`, and `<ctgmath>` is
27
+ deprecated ([[depr.c.headers]]).
28
+
29
  ### Modifications to definitions <a id="diff.mods.to.definitions">[[diff.mods.to.definitions]]</a>
30
 
31
  #### Types `char16_t` and `char32_t` <a id="diff.char16">[[diff.char16]]</a>
32
 
33
  The types `char16_t` and `char32_t` are distinct types rather than
34
+ typedefs to existing integral types. The tokens `char16_t` and
35
+ `char32_t` are keywords in this International Standard ([[lex.key]]).
36
+ They do not appear as macro names defined in `<cuchar>` (
37
+ [[cuchar.syn]]).
38
 
39
  #### Type `wchar_t` <a id="diff.wchar.t">[[diff.wchar.t]]</a>
40
 
41
+ The type `wchar_t` is a distinct type rather than a typedef to an
42
+ existing integral type. The token `wchar_t` is a keyword in this
43
+ International Standard ([[lex.key]]). It does not appear as a type name
44
+ defined in any of `<cstddef>` ([[cstddef.syn]]), `<cstdlib>` (
45
+ [[cstdlib.syn]]), or `<cwchar>` ([[cwchar.syn]]).
46
 
47
+ #### Header `<assert.h>` <a id="diff.header.assert.h">[[diff.header.assert.h]]</a>
48
+
49
+ The token `static_assert` is a keyword in this International Standard (
50
+ [[lex.key]]). It does not appear as a macro name defined in
51
+ `<cassert>` ([[cassert.syn]]).
52
 
53
  #### Header `<iso646.h>` <a id="diff.header.iso646.h">[[diff.header.iso646.h]]</a>
54
 
55
  The tokens `and`, `and_eq`, `bitand`, `bitor`, `compl`, `not_eq`, `not`,
56
  `or`, `or_eq`, `xor`, and `xor_eq` are keywords in this International
57
  Standard ([[lex.key]]). They do not appear as macro names defined in
58
  `<ciso646>`.
59
 
60
+ #### Header `<stdalign.h>` <a id="diff.header.stdalign.h">[[diff.header.stdalign.h]]</a>
61
+
62
+ The token `alignas` is a keyword in this International Standard (
63
+ [[lex.key]]). It does not appear as a macro name defined in
64
+ `<cstdalign>` ([[depr.cstdalign.syn]]).
65
+
66
+ #### Header `<stdbool.h>` <a id="diff.header.stdbool.h">[[diff.header.stdbool.h]]</a>
67
+
68
+ The tokens `bool`, `true`, and `false` are keywords in this
69
+ International Standard ([[lex.key]]). They do not appear as macro names
70
+ defined in `<cstdbool>` ([[depr.cstdbool.syn]]).
71
+
72
  #### Macro `NULL` <a id="diff.null">[[diff.null]]</a>
73
 
74
+ The macro `NULL`, defined in any of `<clocale>` ([[c.locales]]),
75
+ `<cstddef>` ([[cstddef.syn]]), `<cstdio>` ([[cstdio.syn]]),
76
+ `<cstdlib>` ([[cstdlib.syn]]), `<cstring>` ([[cstring.syn]]),
77
+ `<ctime>` ([[ctime.syn]]), or `<cwchar>` ([[cwchar.syn]]), is an
78
+ *implementation-defined* C++null pointer constant in this International
79
  Standard ([[support.types]]).
80
 
81
  ### Modifications to declarations <a id="diff.mods.to.declarations">[[diff.mods.to.declarations]]</a>
82
 
83
+ Header `<cstring>` ([[cstring.syn]]): The following functions have
84
+ different declarations:
85
 
86
  - `strchr`
87
  - `strpbrk`
88
  - `strrchr`
89
  - `strstr`
90
  - `memchr`
91
 
92
+ Subclause [[cstring.syn]] describes the changes.
93
+
94
+ Header `<cwchar>` ([[cwchar.syn]]): The following functions have
95
+ different declarations:
96
+
97
+ - `wcschr`
98
+ - `wcspbrk`
99
+ - `wcsrchr`
100
+ - `wcsstr`
101
+ - `wmemchr`
102
+
103
+ Subclause [[cwchar.syn]] describes the changes.
104
+
105
+ Header `<cstddef>` ([[cstddef.syn]]) declares the name `nullptr_t` in
106
+ addition to the names declared in `<stddef.h>` in the C standard
107
+ library.
108
 
109
  ### Modifications to behavior <a id="diff.mods.to.behavior">[[diff.mods.to.behavior]]</a>
110
 
111
+ Header `<cstdlib>` ([[cstdlib.syn]]): The following functions have
112
+ different behavior:
113
 
114
  - `atexit`
115
  - `exit`
116
  - `abort`
117
 
118
+ Subclause [[support.start.term]] describes the changes.
119
 
120
+ Header `<csetjmp>` ([[csetjmp.syn]]): The following functions have
121
+ different behavior:
122
 
123
  - `longjmp`
124
 
125
+ Subclause [[csetjmp.syn]] describes the changes.
126
 
127
  #### Macro `offsetof(type, member-designator)` <a id="diff.offsetof">[[diff.offsetof]]</a>
128
 
129
+ The macro `offsetof`, defined in `<cstddef>` ([[cstddef.syn]]), accepts
130
+ a restricted set of `type` arguments in this International Standard.
131
+ Subclause [[support.types.layout]] describes the change.
132
 
133
  #### Memory allocation functions <a id="diff.malloc">[[diff.malloc]]</a>
134
 
135
+ The functions `aligned_alloc`, `calloc`, `malloc`, and `realloc` are
136
+ restricted in this International Standard. Subclause [[c.malloc]]
137
+ describes the changes.
138
 
139
  <!-- Link reference definitions -->
140
  [algorithms]: algorithms.md#algorithms
141
  [algorithms.general]: algorithms.md#algorithms.general
142
  [arithmetic.operations]: utilities.md#arithmetic.operations
143
  [associative.reqmts]: containers.md#associative.reqmts
144
  [basic]: basic.md#basic
145
  [basic.def]: basic.md#basic.def
 
146
  [basic.link]: basic.md#basic.link
147
  [basic.scope]: basic.md#basic.scope
148
+ [basic.start.main]: basic.md#basic.start.main
149
  [basic.stc.dynamic]: basic.md#basic.stc.dynamic
150
  [basic.stc.dynamic.deallocation]: basic.md#basic.stc.dynamic.deallocation
151
+ [basic.string]: strings.md#basic.string
152
  [basic.types]: basic.md#basic.types
153
  [bitwise.operations]: utilities.md#bitwise.operations
154
  [c.files]: input.md#c.files
155
+ [c.locales]: localization.md#c.locales
156
  [c.malloc]: utilities.md#c.malloc
157
+ [cassert.syn]: diagnostics.md#cassert.syn
158
  [class]: class.md#class
159
  [class.bit]: class.md#class.bit
160
  [class.copy]: special.md#class.copy
161
  [class.ctor]: special.md#class.ctor
162
  [class.dtor]: special.md#class.dtor
163
+ [class.inhctor.init]: special.md#class.inhctor.init
164
  [class.name]: class.md#class.name
165
  [class.nest]: class.md#class.nest
166
  [class.nested.type]: class.md#class.nested.type
167
  [comparisons]: utilities.md#comparisons
168
  [complex.numbers]: numerics.md#complex.numbers
169
  [container.requirements]: containers.md#container.requirements
170
  [containers]: containers.md#containers
171
  [conv]: conv.md#conv
172
+ [conv.array]: conv.md#conv.array
173
+ [conv.func]: conv.md#conv.func
174
+ [conv.lval]: conv.md#conv.lval
175
  [conv.ptr]: conv.md#conv.ptr
176
  [cpp]: cpp.md#cpp
177
  [cpp.predefined]: cpp.md#cpp.predefined
178
+ [csetjmp.syn]: language.md#csetjmp.syn
179
+ [cstddef.syn]: language.md#cstddef.syn
180
+ [cstdio.syn]: input.md#cstdio.syn
181
+ [cstdlib.syn]: language.md#cstdlib.syn
182
+ [cstring.syn]: strings.md#cstring.syn
183
+ [ctime.syn]: utilities.md#ctime.syn
184
+ [cuchar.syn]: strings.md#cuchar.syn
185
+ [cwchar.syn]: strings.md#cwchar.syn
186
  [dcl.constexpr]: dcl.md#dcl.constexpr
187
  [dcl.dcl]: dcl.md#dcl.dcl
188
  [dcl.decl]: dcl.md#dcl.decl
189
  [dcl.enum]: dcl.md#dcl.enum
190
  [dcl.fct]: dcl.md#dcl.fct
191
  [dcl.fct.def]: dcl.md#dcl.fct.def
192
+ [dcl.init.aggr]: dcl.md#dcl.init.aggr
193
  [dcl.init.list]: dcl.md#dcl.init.list
194
  [dcl.init.string]: dcl.md#dcl.init.string
195
  [dcl.spec]: dcl.md#dcl.spec
196
  [dcl.spec.auto]: dcl.md#dcl.spec.auto
197
  [dcl.stc]: dcl.md#dcl.stc
198
  [dcl.type]: dcl.md#dcl.type
199
  [dcl.typedef]: dcl.md#dcl.typedef
200
+ [depr]: future.md#depr
201
  [depr.c.headers]: future.md#depr.c.headers
202
+ [depr.ccomplex.syn]: future.md#depr.ccomplex.syn
203
+ [depr.cstdalign.syn]: future.md#depr.cstdalign.syn
204
+ [depr.cstdbool.syn]: future.md#depr.cstdbool.syn
205
+ [depr.ctgmath.syn]: future.md#depr.ctgmath.syn
206
+ [depr.negators]: future.md#depr.negators
207
  [diagnostics]: diagnostics.md#diagnostics
208
  [diff]: #diff
209
  [diff.basic]: #diff.basic
210
  [diff.char16]: #diff.char16
211
  [diff.class]: #diff.class
 
229
  [diff.cpp03.temp]: #diff.cpp03.temp
230
  [diff.cpp03.utilities]: #diff.cpp03.utilities
231
  [diff.cpp11]: #diff.cpp11
232
  [diff.cpp11.basic]: #diff.cpp11.basic
233
  [diff.cpp11.dcl.dcl]: #diff.cpp11.dcl.dcl
234
+ [diff.cpp11.dcl.decl]: #diff.cpp11.dcl.decl
235
+ [diff.cpp11.expr]: #diff.cpp11.expr
236
  [diff.cpp11.input.output]: #diff.cpp11.input.output
237
  [diff.cpp11.lex]: #diff.cpp11.lex
238
+ [diff.cpp11.library]: #diff.cpp11.library
239
+ [diff.cpp14]: #diff.cpp14
240
+ [diff.cpp14.containers]: #diff.cpp14.containers
241
+ [diff.cpp14.dcl.dcl]: #diff.cpp14.dcl.dcl
242
+ [diff.cpp14.decl]: #diff.cpp14.decl
243
+ [diff.cpp14.depr]: #diff.cpp14.depr
244
+ [diff.cpp14.except]: #diff.cpp14.except
245
+ [diff.cpp14.expr]: #diff.cpp14.expr
246
+ [diff.cpp14.lex]: #diff.cpp14.lex
247
+ [diff.cpp14.library]: #diff.cpp14.library
248
+ [diff.cpp14.special]: #diff.cpp14.special
249
+ [diff.cpp14.string]: #diff.cpp14.string
250
+ [diff.cpp14.temp]: #diff.cpp14.temp
251
+ [diff.cpp14.utilities]: #diff.cpp14.utilities
252
  [diff.dcl]: #diff.dcl
253
  [diff.decl]: #diff.decl
254
  [diff.expr]: #diff.expr
255
+ [diff.header.assert.h]: #diff.header.assert.h
256
  [diff.header.iso646.h]: #diff.header.iso646.h
257
+ [diff.header.stdalign.h]: #diff.header.stdalign.h
258
+ [diff.header.stdbool.h]: #diff.header.stdbool.h
259
  [diff.iso]: #diff.iso
260
  [diff.lex]: #diff.lex
261
  [diff.library]: #diff.library
262
  [diff.malloc]: #diff.malloc
263
  [diff.mods.to.behavior]: #diff.mods.to.behavior
 
268
  [diff.offsetof]: #diff.offsetof
269
  [diff.special]: #diff.special
270
  [diff.stat]: #diff.stat
271
  [diff.wchar.t]: #diff.wchar.t
272
  [errno]: diagnostics.md#errno
273
+ [except]: except.md#except
274
+ [except.spec]: except.md#except.spec
275
  [expr]: expr.md#expr
276
  [expr.ass]: expr.md#expr.ass
277
  [expr.call]: expr.md#expr.call
278
  [expr.cast]: expr.md#expr.cast
279
  [expr.comma]: expr.md#expr.comma
280
  [expr.cond]: expr.md#expr.cond
281
+ [expr.delete]: expr.md#expr.delete
282
+ [expr.log.and]: expr.md#expr.log.and
283
  [expr.mul]: expr.md#expr.mul
284
  [expr.new]: expr.md#expr.new
285
+ [expr.post.incr]: expr.md#expr.post.incr
286
+ [expr.pre.incr]: expr.md#expr.pre.incr
287
  [expr.sizeof]: expr.md#expr.sizeof
288
+ [func.wrap]: utilities.md#func.wrap
289
  [headers]: library.md#headers
290
  [input.output]: input.md#input.output
291
  [ios.base]: input.md#ios.base
292
  [ios::failure]: input.md#ios::failure
293
  [iostate.flags]: input.md#iostate.flags
 
295
  [language.support]: language.md#language.support
296
  [lex]: lex.md#lex
297
  [lex.ccon]: lex.md#lex.ccon
298
  [lex.icon]: lex.md#lex.icon
299
  [lex.key]: lex.md#lex.key
300
+ [lex.phases]: lex.md#lex.phases
301
  [lex.ppnumber]: lex.md#lex.ppnumber
302
  [lex.pptoken]: lex.md#lex.pptoken
303
  [lex.string]: lex.md#lex.string
304
  [library]: library.md#library
305
  [logical.operations]: utilities.md#logical.operations
306
+ [namespace.future]: library.md#namespace.future
307
  [namespace.posix]: library.md#namespace.posix
 
308
  [new.delete.single]: language.md#new.delete.single
309
  [numerics]: numerics.md#numerics
310
  [ostream::sentry]: input.md#ostream::sentry
311
  [refwrap]: utilities.md#refwrap
312
  [res.on.macro.definitions]: library.md#res.on.macro.definitions
 
317
  [stmt.stmt]: stmt.md#stmt.stmt
318
  [stmt.switch]: stmt.md#stmt.switch
319
  [string.classes]: strings.md#string.classes
320
  [string.require]: strings.md#string.require
321
  [strings]: strings.md#strings
 
322
  [support.start.term]: language.md#support.start.term
323
  [support.types]: language.md#support.types
324
+ [support.types.layout]: language.md#support.types.layout
325
  [swappable.requirements]: library.md#swappable.requirements
 
 
 
 
 
326
  [tab:keywords]: lex.md#tab:keywords
327
  [temp]: temp.md#temp
328
  [temp.arg]: temp.md#temp.arg
329
+ [temp.deduct.type]: temp.md#temp.deduct.type
330
  [temp.dep.candidate]: temp.md#temp.dep.candidate
331
  [temp.param]: temp.md#temp.param
332
  [thread]: thread.md#thread
333
  [util.dynamic.safety]: utilities.md#util.dynamic.safety
334
+ [util.smartptr.shared]: utilities.md#util.smartptr.shared
335
  [utilities]: utilities.md#utilities