[diff.cpp17.library] # Annex C (informative) Compatibility [[diff]](./#diff) ## C.3 C++ and ISO C++ 2017 [[diff.cpp17]](diff.cpp17#library) ### C.3.10 [[library]](library "16 Library introduction"): library introduction [diff.cpp17.library] [1](#1) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/compatibility.tex#L1329) **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:[](barrier.syn#header:%3cbarrier%3e "32.9.3.2 Header synopsis [barrier.syn]"),[](bit.general#header:%3cbit%3e "22.11.1 General [bit.general]"),[](charconv.syn#header:%3ccharconv%3e "28.2.1 Header synopsis [charconv.syn]"),[](compare.syn#header:%3ccompare%3e "17.12.1 Header synopsis [compare.syn]"),[](concepts.syn#header:%3cconcepts%3e "18.3 Header synopsis [concepts.syn]"),[](coroutine.syn#header:%3ccoroutine%3e "17.13.2 Header synopsis [coroutine.syn]"),[](format.formatter.spec#header:%3cformat%3e "28.5.6.4 Formatter specializations [format.formatter.spec]"),[](latch.syn#header:%3clatch%3e "32.9.2.2 Header synopsis [latch.syn]"),[](numbers.syn#header:%3cnumbers%3e "29.8.1 Header synopsis [numbers.syn]"),[](ranges.syn#header:%3cranges%3e "25.2 Header synopsis [ranges.syn]"),[](semaphore.syn#header:%3csemaphore%3e "32.8.2 Header synopsis [semaphore.syn]"),[](source.location.syn#header:%3csource_location%3e "17.8.1 Header synopsis [source.location.syn]"),[](span.syn#header:%3cspan%3e "23.7.2.1 Header synopsis [span.syn]"),[](thread.stoptoken.syn#header:%3cstop_token%3e "32.3.2 Header synopsis [thread.stoptoken.syn]"),[](syncstream.syn#header:%3csyncstream%3e "31.11.1 Header synopsis [syncstream.syn]"), and[](version.syn#header:%3cversion%3e "17.3.2 Header synopsis [version.syn]")[.](#1.sentence-3) Valid C++ 2017 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#L1355) **Affected subclause:** [[headers]](headers) **Change:** Remove vacuous C++ header files[.](#2.sentence-1) **Rationale:** The empty headers implied a false requirement to achieve C compatibility with the C++ headers[.](#2.sentence-2) **Effect on original feature:** A valid C++ 2017 program that #includes any of the following headers may fail to compile:,,,, and[.](#2.sentence-3) To retain the same behavior: - [(2.1)](#2.1) a #include of can be replaced by a #include of [](complex.syn#header:%3ccomplex%3e "29.4.2 Header synopsis [complex.syn]"), - [(2.2)](#2.2) a #include of can be replaced by a #include of [](cmath.syn#header:%3ccmath%3e "29.7.1 Header synopsis [cmath.syn]") and a #include of [](complex.syn#header:%3ccomplex%3e "29.4.2 Header synopsis [complex.syn]"), and - [(2.3)](#2.3) a #include of,, or can simply be removed[.](#2.sentence-4)