- 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
|
| 4 |
-
|
| 5 |
-
|
| 6 |
-
|
| 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
|
| 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 |
-
|
| 134 |
-
|
| 135 |
-
`
|
|
|
|
|
|
|
| 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>`,
|
| 147 |
-
`<
|
| 148 |
-
|
|
|
|
|
|
|
| 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
|
|
|
|
| 154 |
|
| 155 |
- `strchr`
|
| 156 |
- `strpbrk`
|
| 157 |
- `strrchr`
|
| 158 |
- `strstr`
|
| 159 |
- `memchr`
|
| 160 |
|
| 161 |
-
[[
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 162 |
|
| 163 |
### Modifications to behavior <a id="diff.mods.to.behavior">[[diff.mods.to.behavior]]</a>
|
| 164 |
|
| 165 |
-
Header `<cstdlib>`: The following functions have
|
|
|
|
| 166 |
|
| 167 |
- `atexit`
|
| 168 |
- `exit`
|
| 169 |
- `abort`
|
| 170 |
|
| 171 |
-
[[support.start.term]] describes the changes.
|
| 172 |
|
| 173 |
-
Header `<csetjmp>`: The following functions have
|
|
|
|
| 174 |
|
| 175 |
- `longjmp`
|
| 176 |
|
| 177 |
-
[[
|
| 178 |
|
| 179 |
#### Macro `offsetof(type, member-designator)` <a id="diff.offsetof">[[diff.offsetof]]</a>
|
| 180 |
|
| 181 |
-
The macro `offsetof`, defined in `<cstddef>`, accepts
|
| 182 |
-
of `type` arguments in this International Standard.
|
| 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
|
| 188 |
-
International Standard. [[c.malloc]]
|
|
|
|
| 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 |
-
[
|
| 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
|