This commit is contained in:
2025-10-25 03:02:53 +03:00
commit 043225d523
3416 changed files with 681196 additions and 0 deletions

View File

@@ -0,0 +1,65 @@
[diff.mods.to.behavior]
# Annex C (informative) Compatibility [[diff]](./#diff)
## C.8 C standard library [[diff.library]](diff.library#diff.mods.to.behavior)
### C.8.5 Modifications to behavior [diff.mods.to.behavior]
#### [C.8.5.1](#general) General [[diff.mods.to.behavior.general]](diff.mods.to.behavior.general)
[1](#general-1)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/compatibility.tex#L3806)
Header [<cstdlib>](cstdlib.syn#header:%3ccstdlib%3e "17.2.2Header <cstdlib> synopsis[cstdlib.syn]"):
The following functions have different behavior:
- [(1.1)](#general-1.1)
atexit
- [(1.2)](#general-1.2)
exit
- [(1.3)](#general-1.3)
abort
Subclause [[support.start.term]](support.start.term "17.5Startup and termination") describes the changes[.](#general-1.sentence-2)
[2](#general-2)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/compatibility.tex#L3817)
Header [<csetjmp>](csetjmp.syn#header:%3ccsetjmp%3e "17.14.3Header <csetjmp> synopsis[csetjmp.syn]"):
The following functions have different behavior:
- [(2.1)](#general-2.1)
longjmp
Subclause [[csetjmp.syn]](csetjmp.syn "17.14.3Header <csetjmp> synopsis") describes the changes[.](#general-2.sentence-2)
#### [C.8.5.2](#diff.offsetof) Macro offsetof(*type*, *member-designator*) [[diff.offsetof]](diff.offsetof)
[1](#diff.offsetof-1)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/compatibility.tex#L3829)
The macro offsetof, defined in[<cstddef>](cstddef.syn#header:%3ccstddef%3e "17.2.1Header <cstddef> synopsis[cstddef.syn]"),
accepts a restricted set of *type* arguments in C++[.](#diff.offsetof-1.sentence-1)
Subclause [[support.types.layout]](support.types.layout "17.2.4Sizes, alignments, and offsets") describes the change[.](#diff.offsetof-1.sentence-2)
#### [C.8.5.3](#diff.malloc) Memory allocation functions [[diff.malloc]](diff.malloc)
[1](#diff.malloc-1)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/compatibility.tex#L3837)
The functionsaligned_alloc,calloc,malloc,
andrealloc are restricted in C++[.](#diff.malloc-1.sentence-1)
Subclause [[c.malloc]](c.malloc "20.2.12C library memory allocation") describes the changes[.](#diff.malloc-1.sentence-2)

View File

@@ -0,0 +1,43 @@
[diff.mods.to.behavior.general]
# Annex C (informative) Compatibility [[diff]](./#diff)
## C.8 C standard library [[diff.library]](diff.library#diff.mods.to.behavior.general)
### C.8.5 Modifications to behavior [[diff.mods.to.behavior]](diff.mods.to.behavior#general)
#### C.8.5.1 General [diff.mods.to.behavior.general]
[1](#1)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/compatibility.tex#L3806)
Header [<cstdlib>](cstdlib.syn#header:%3ccstdlib%3e "17.2.2Header <cstdlib> synopsis[cstdlib.syn]"):
The following functions have different behavior:
- [(1.1)](#1.1)
atexit
- [(1.2)](#1.2)
exit
- [(1.3)](#1.3)
abort
Subclause [[support.start.term]](support.start.term "17.5Startup and termination") describes the changes[.](#1.sentence-2)
[2](#2)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/compatibility.tex#L3817)
Header [<csetjmp>](csetjmp.syn#header:%3ccsetjmp%3e "17.14.3Header <csetjmp> synopsis[csetjmp.syn]"):
The following functions have different behavior:
- [(2.1)](#2.1)
longjmp
Subclause [[csetjmp.syn]](csetjmp.syn "17.14.3Header <csetjmp> synopsis") describes the changes[.](#2.sentence-2)

View File

@@ -0,0 +1,73 @@
[diff.mods.to.declarations]
# Annex C (informative) Compatibility [[diff]](./#diff)
## C.8 C standard library [[diff.library]](diff.library#diff.mods.to.declarations)
### C.8.4 Modifications to declarations [diff.mods.to.declarations]
[1](#1)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/compatibility.tex#L3769)
Header [<cstring>](cstring.syn#header:%3ccstring%3e "27.5.1Header <cstring> synopsis[cstring.syn]"):
The following functions have different declarations:
- [(1.1)](#1.1)
strchr
- [(1.2)](#1.2)
strpbrk
- [(1.3)](#1.3)
strrchr
- [(1.4)](#1.4)
strstr
- [(1.5)](#1.5)
memchr
Subclause [[cstring.syn]](cstring.syn "27.5.1Header <cstring> synopsis") describes the changes[.](#1.sentence-2)
[2](#2)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/compatibility.tex#L3782)
Header [<cwchar>](cwchar.syn#header:%3ccwchar%3e "28.7.3Header <cwchar> synopsis[cwchar.syn]"):
The following functions have different declarations:
- [(2.1)](#2.1)
wcschr
- [(2.2)](#2.2)
wcspbrk
- [(2.3)](#2.3)
wcsrchr
- [(2.4)](#2.4)
wcsstr
- [(2.5)](#2.5)
wmemchr
Subclause [[cwchar.syn]](cwchar.syn "28.7.3Header <cwchar> synopsis") describes the changes[.](#2.sentence-2)
[3](#3)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/compatibility.tex#L3795)
Header [<cstddef>](cstddef.syn#header:%3ccstddef%3e "17.2.1Header <cstddef> synopsis[cstddef.syn]") declares the names nullptr_t, byte, and to_integer,
and the operators and operator templates in [[support.types.byteops]](support.types.byteops "17.2.5byte type operations"),
in addition to the names declared in[<stddef.h>](support.c.headers.general#header:%3cstddef.h%3e "17.15.1General[support.c.headers.general]") in the C standard library[.](#3.sentence-1)

View File

@@ -0,0 +1,56 @@
[diff.mods.to.definitions]
# Annex C (informative) Compatibility [[diff]](./#diff)
## C.8 C standard library [[diff.library]](diff.library#diff.mods.to.definitions)
### C.8.3 Modifications to definitions [diff.mods.to.definitions]
#### [C.8.3.1](#diff.char16) Types char8_t, char16_t, and char32_t [[diff.char16]](diff.char16)
[1](#diff.char16-1)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/compatibility.tex#L3711)
The types char8_t, char16_t, and char32_t are distinct types rather than typedefs to existing integral types[.](#diff.char16-1.sentence-1)
The tokens char8_t, char16_t, and char32_t are keywords in C++ ([[lex.key]](lex.key "5.12Keywords"))[.](#diff.char16-1.sentence-2)
They do not appear as macro or type names defined in[<cuchar>](cuchar.syn#header:%3ccuchar%3e "28.7.4Header <cuchar> synopsis[cuchar.syn]")[.](#diff.char16-1.sentence-3)
#### [C.8.3.2](#diff.wchar.t) Type wchar_t [[diff.wchar.t]](diff.wchar.t)
[1](#diff.wchar.t-1)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/compatibility.tex#L3721)
The type wchar_t is a distinct type rather than a typedef to an
existing integral type[.](#diff.wchar.t-1.sentence-1)
The token wchar_t is a keyword in C++ ([[lex.key]](lex.key "5.12Keywords"))[.](#diff.wchar.t-1.sentence-2)
It does not appear as a macro or type name defined in any of[<cstddef>](cstddef.syn#header:%3ccstddef%3e "17.2.1Header <cstddef> synopsis[cstddef.syn]"),[<cstdlib>](cstdlib.syn#header:%3ccstdlib%3e "17.2.2Header <cstdlib> synopsis[cstdlib.syn]"),
or [<cwchar>](cwchar.syn#header:%3ccwchar%3e "28.7.3Header <cwchar> synopsis[cwchar.syn]")[.](#diff.wchar.t-1.sentence-3)
#### [C.8.3.3](#diff.header.iso646.h) Header <iso646.h> [[diff.header.iso646.h]](diff.header.iso646.h)
[1](#diff.header.iso646.h-1)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/compatibility.tex#L3733)
The tokensand,and_eq,bitand,bitor,compl,not,not_eq,or,or_eq,xor,
andxor_eq are keywords in C++ ([[lex.key]](lex.key "5.12Keywords")),
and are not introduced as macros
by [<iso646.h>](iso646.h.syn#header:%3ciso646.h%3e "17.15.3Header <iso646.h> synopsis[iso646.h.syn]")[.](#diff.header.iso646.h-1.sentence-1)
#### [C.8.3.4](#diff.null) Macro NULL [[diff.null]](diff.null)
[1](#diff.null-1)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/compatibility.tex#L3753)
The macroNULL,
defined in any of[<clocale>](clocale.syn#header:%3cclocale%3e "28.3.5.1Header <clocale> synopsis[clocale.syn]"),[<cstddef>](cstddef.syn#header:%3ccstddef%3e "17.2.1Header <cstddef> synopsis[cstddef.syn]"),[<cstdio>](cstdio.syn#header:%3ccstdio%3e "31.13.1Header <cstdio> synopsis[cstdio.syn]"),[<cstdlib>](cstdlib.syn#header:%3ccstdlib%3e "17.2.2Header <cstdlib> synopsis[cstdlib.syn]"),[<cstring>](cstring.syn#header:%3ccstring%3e "27.5.1Header <cstring> synopsis[cstring.syn]"),[<ctime>](ctime.syn#header:%3cctime%3e "30.15Header <ctime> synopsis[ctime.syn]"),
or [<cwchar>](cwchar.syn#header:%3ccwchar%3e "28.7.3Header <cwchar> synopsis[cwchar.syn]"),
is an implementation-defined null pointer constant in
C++ ([[support.types]](support.types "17.2Common definitions"))[.](#diff.null-1.sentence-1)

View File

@@ -0,0 +1,30 @@
[diff.mods.to.headers]
# Annex C (informative) Compatibility [[diff]](./#diff)
## C.8 C standard library [[diff.library]](diff.library#diff.mods.to.headers)
### C.8.2 Modifications to headers [diff.mods.to.headers]
[1](#1)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/compatibility.tex#L3691)
For compatibility with the C standard library,
the C++ standard library provides the C headers enumerated
in [[support.c.headers]](support.c.headers "17.15C headers")[.](#1.sentence-1)
[2](#2)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/compatibility.tex#L3696)
There are no C++ headers for the C standard library's headers<stdnoreturn.h> and <threads.h>,
nor are these headers from the C standard library headers themselves part of C++[.](#2.sentence-1)
[3](#3)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/compatibility.tex#L3701)
The C headers [<complex.h>](complex.h.syn#header:%3ccomplex.h%3e "17.15.2Header <complex.h> synopsis[complex.h.syn]") and[<tgmath.h>](tgmath.h.syn#header:%3ctgmath.h%3e "17.15.6Header <tgmath.h> synopsis[tgmath.h.syn]") do not contain any of the content from
the C standard library and instead merely include other headers from the C++
standard library[.](#3.sentence-1)