[diff.cpp23.library]

# Annex C (informative) Compatibility [[diff]](./#diff)

## C.1 C++ and ISO C++ 2023 [[diff.cpp23]](diff.cpp23#library)

### C.1.6 [[library]](library "16 Library introduction"): library introduction [diff.cpp23.library]

[1](#1)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/compatibility.tex#L243)

**Affected subclause:** [[headers]](headers)  


**Change:** New headers[.](#1.sentence-1)

  


**Rationale:** New functionality[.](#1.sentence-2)

  


**Effect on original feature:** The following C++ headers are new:[<contracts>](contracts.syn#header:%3ccontracts%3e "17.10.1 Header <contracts> synopsis [contracts.syn]"),[<debugging>](debugging.syn#header:%3cdebugging%3e "19.7.2 Header <debugging> synopsis [debugging.syn]"),[<hazard_pointer>](hazard.pointer.syn#header:%3chazard_pointer%3e "32.11.3.2 Header <hazard_­pointer> synopsis [hazard.pointer.syn]"),[<hive>](hive.syn#header:%3chive%3e "23.3.8 Header <hive> synopsis [hive.syn]"),[<inplace_vector>](inplace.vector.syn#header:%3cinplace_vector%3e "23.3.15 Header <inplace_­vector> synopsis [inplace.vector.syn]"),[<linalg>](linalg.syn#header:%3clinalg%3e "29.9.2 Header <linalg> synopsis [linalg.syn]"),[<meta>](meta.syn#header:%3cmeta%3e "21.4.1 Header <meta> synopsis [meta.syn]"),[<rcu>](rcu.syn#header:%3crcu%3e "32.11.2.2 Header <rcu> synopsis [rcu.syn]"),[<simd>](simd.syn#header:%3csimd%3e "29.10.3 Header <simd> synopsis [simd.syn]"),[<stdbit.h>](stdbit.h.syn#header:%3cstdbit.h%3e "22.12 Header <stdbit.h> synopsis [stdbit.h.syn]"),[<stdckdint.h>](stdckdint.h.syn#header:%3cstdckdint.h%3e "29.11.1 Header <stdckdint.h> synopsis [stdckdint.h.syn]"), and[<text_encoding>](text.encoding.syn#header:%3ctext_encoding%3e "28.4.1 Header <text_­encoding> synopsis [text.encoding.syn]")[.](#1.sentence-3)

Valid C++ 2023 code that #includes headers with these names may be
invalid in this revision of C++[.](#1.sentence-4)

[2](#2)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/compatibility.tex#L265)

**Affected subclause:** [[res.on.macro.definitions]](res.on.macro.definitions)  


**Change:** Additional restrictions on macro names[.](#2.sentence-1)

  


**Rationale:** Avoid hard to diagnose or non-portable constructs[.](#2.sentence-2)

  


**Effect on original feature:** Names of special identifiers may not be used as macro names[.](#2.sentence-3)

Valid C++ 2023 code that defines replaceable_if_eligible ortrivially_relocatable_if_eligible as macros is invalid
in this revision of C++[.](#2.sentence-4)
