Files
clang-p2996/libcxx/docs/Cxx2aStatusPaperStatus.csv
Marek Kurdej 841132efda [libc++] [P0966] [C++20] Fix bug PR45368 by correctly implementing P0966: string::reserve should not shrink.
This patch fixes the implementation as well as the tests that didn't actually test the wanted behaviour.
You'll find all the details in the bug report.
It adds as well deprecation warning for reserve() (without argument) and adds a test.

http://wg21.link/P0966R1
https://bugs.llvm.org/show_bug.cgi?id=45368
https://reviews.llvm.org/D54992

Reviewed By: ldionne, #libc

Differential Revision: https://reviews.llvm.org/D91778
2020-11-26 10:13:12 +01:00

21 KiB

1Paper #GroupPaper NameMeetingStatusFirst released version
2`P0463R1 <https://wg21.link/P0463R1>`__LWGEndian just EndianToronto|Complete|7.0
3`P0674R1 <https://wg21.link/P0674R1>`__LWGExtending make_shared to Support ArraysToronto
4
5`P0020R6 <https://wg21.link/P0020R6>`__LWGFloating Point AtomicAlbuquerque
6`P0053R7 <https://wg21.link/P0053R7>`__LWGC++ Synchronized Buffered OstreamAlbuquerque
7`P0202R3 <https://wg21.link/P0202R3>`__LWGAdd constexpr modifiers to functions in <algorithm> and <utility> HeadersAlbuquerque|In Progress| [#note-P0202]_7.0
8`P0415R1 <https://wg21.link/P0415R1>`__LWGConstexpr for ``std::complex``\ Albuquerque|In Progress|7.0
9`P0439R0 <https://wg21.link/P0439R0>`__LWGMake ``std::memory_order``\ a scoped enumerationAlbuquerque|Complete|
10`P0457R2 <https://wg21.link/P0457R2>`__LWGString Prefix and Suffix CheckingAlbuquerque|Complete|6.0
11`P0550R2 <https://wg21.link/P0550R2>`__LWGTransformation Trait ``remove_cvref``\ Albuquerque|Complete|6.0
12`P0600R1 <https://wg21.link/P0600R1>`__LWGnodiscard in the LibraryAlbuquerque|In Progress| [#note-P0600]_7.0
13`P0616R0 <https://wg21.link/P0616R0>`__LWGde-pessimize legacy <numeric> algorithms with std::moveAlbuquerque
14`P0653R2 <https://wg21.link/P0653R2>`__LWGUtility to convert a pointer to a raw pointerAlbuquerque|Complete|6.0
15`P0718R2 <https://wg21.link/P0718R2>`__LWGAtomic shared_ptrAlbuquerque
16`P0767R1 <https://wg21.link/P0767R1>`__CWGDeprecate PODAlbuquerque|Complete|7.0
17`P0768R1 <https://wg21.link/P0768R1>`__CWGLibrary Support for the Spaceship (Comparison) OperatorAlbuquerque|Complete|
18`P0777R1 <https://wg21.link/P0777R1>`__LWGTreating Unnecessary ``decay``\ Albuquerque|Complete|7.0
19`P0122R7 <https://wg21.link/P0122R7>`__LWG<span>Jacksonville|Complete|7.0
20`P0355R7 <https://wg21.link/P0355R7>`__LWGExtending chrono to Calendars and Time ZonesJacksonville|In Progress|
21`P0551R3 <https://wg21.link/P0551R3>`__LWGThou Shalt Not Specialize ``std``\ Function Templates!Jacksonville|Complete|11.0
22`P0753R2 <https://wg21.link/P0753R2>`__LWGManipulators for C++ Synchronized Buffered OstreamJacksonville
23`P0754R2 <https://wg21.link/P0754R2>`__LWG<version>Jacksonville|Complete|7.0
24`P0809R0 <https://wg21.link/P0809R0>`__LWGComparing Unordered ContainersJacksonville
25`P0858R0 <https://wg21.link/P0858R0>`__LWGConstexpr iterator requirementsJacksonville
26`P0905R1 <https://wg21.link/P0905R1>`__CWGSymmetry for spaceshipJacksonville
27`P0966R1 <https://wg21.link/P0966R1>`__LWG``string::reserve``\ Should Not ShrinkJacksonville|Complete| [#note-P0966]_12.0
28
29`P0019R8 <https://wg21.link/P0019R8>`__LWGAtomic RefRapperswil
30`P0458R2 <https://wg21.link/P0458R2>`__LWGChecking for Existence of an Element in Associative ContainersRapperswil|Complete|
31`P0475R1 <https://wg21.link/P0475R1>`__LWGLWG 2511: guaranteed copy elision for piecewise constructionRapperswil
32`P0476R2 <https://wg21.link/P0476R2>`__LWGBit-casting object representationsRapperswil
33`P0528R3 <https://wg21.link/P0528R3>`__CWGThe Curious Case of Padding Bits, Featuring Atomic Compare-and-ExchangeRapperswil
34`P0542R5 <https://wg21.link/P0542R5>`__CWGSupport for contract based programming in C++Rapperswil
35`P0556R3 <https://wg21.link/P0556R3>`__LWGIntegral power-of-2 operationsRapperswil|Complete|9.0
36`P0619R4 <https://wg21.link/P0619R4>`__LWGReviewing Deprecated Facilities of C++17 for C++20Rapperswil|Partial| [#note-P0619]_
37`P0646R1 <https://wg21.link/P0646R1>`__LWGImproving the Return Value of Erase-Like AlgorithmsRapperswil|Complete|10.0
38`P0722R3 <https://wg21.link/P0722R3>`__CWGEfficient sized delete for variable sized classesRapperswil|Complete|9.0
39`P0758R1 <https://wg21.link/P0758R1>`__LWGImplicit conversion traits and utility functionsRapperswil|Complete|
40`P0759R1 <https://wg21.link/P0759R1>`__LWGfpos RequirementsRapperswil|Complete|11.0
41`P0769R2 <https://wg21.link/P0769R2>`__LWGAdd shift to <algorithm>Rapperswil
42`P0788R3 <https://wg21.link/P0788R3>`__LWGStandard Library Specification in a Concepts and Contracts WorldRapperswil
43`P0879R0 <https://wg21.link/P0879R0>`__LWGConstexpr for swap and swap related functions Also resolves LWG issue 2800.Rapperswil
44`P0887R1 <https://wg21.link/P0887R1>`__LWGThe identity metafunctionRapperswil|Complete|8.0
45`P0892R2 <https://wg21.link/P0892R2>`__CWGexplicit(bool)Rapperswil
46`P0898R3 <https://wg21.link/P0898R3>`__LWGStandard Library ConceptsRapperswil
47`P0935R0 <https://wg21.link/P0935R0>`__LWGEradicating unnecessarily explicit default constructors from the standard libraryRapperswil
48`P0941R2 <https://wg21.link/P0941R2>`__CWGIntegrating feature-test macros into the C++ WDRapperswil|In Progress|
49`P1023R0 <https://wg21.link/P1023R0>`__LWGconstexpr comparison operators for std::arrayRapperswil|Complete|8.0
50`P1025R1 <https://wg21.link/P1025R1>`__CWGUpdate The Reference To The Unicode StandardRapperswil
51`P1120R0 <https://wg21.link/P1120R0>`__CWGConsistency improvements for <=> and other comparison operatorsRapperswil
52
53`P0318R1 <https://wg21.link/P0318R1>`__LWGunwrap_ref_decay and unwrap_referenceSan Diego|Complete|8.0
54`P0356R5 <https://wg21.link/P0356R5>`__LWGSimplified partial function applicationSan Diego* *
55`P0357R3 <https://wg21.link/P0357R3>`__LWGreference_wrapper for incomplete typesSan Diego|Complete|8.0
56`P0482R6 <https://wg21.link/P0482R6>`__CWGchar8_t: A type for UTF-8 characters and stringsSan Diego|In Progress|
57`P0487R1 <https://wg21.link/P0487R1>`__LWGFixing ``operator>>(basic_istream&, CharT*)``\ (LWG 2499)San Diego|Complete|8.0
58`P0591R4 <https://wg21.link/P0591R4>`__LWGUtility functions to implement uses-allocator constructionSan Diego* *
59`P0595R2 <https://wg21.link/P0595R2>`__CWGP0595R2 std::is_constant_evaluated()San Diego|Complete|9.0
60`P0602R4 <https://wg21.link/P0602R4>`__LWGvariant and optional should propagate copy/move trivialitySan Diego|Complete|8.0
61`P0608R3 <https://wg21.link/P0608R3>`__LWGA sane variant converting constructorSan Diego|Complete|9.0
62`P0655R1 <https://wg21.link/P0655R1>`__LWGvisit<R>: Explicit Return Type for visitSan Diego* *
63`P0771R1 <https://wg21.link/P0771R1>`__LWGstd::function move constructor should be noexceptSan Diego|Complete|6.0
64`P0896R4 <https://wg21.link/P0896R4>`__LWGThe One Ranges ProposalSan Diego* *
65`P0899R1 <https://wg21.link/P0899R1>`__LWGP0899R1 - LWG 3016 is not a defectSan Diego|Nothing To Do|
66`P0919R3 <https://wg21.link/P0919R3>`__LWGHeterogeneous lookup for unordered containersSan Diego|Complete|12.0
67`P0972R0 <https://wg21.link/P0972R0>`__LWG<chrono> ``zero()``\ , ``min()``\ , and ``max()``\ should be noexceptSan Diego|Complete|8.0
68`P1006R1 <https://wg21.link/P1006R1>`__LWGConstexpr in std::pointer_traitsSan Diego|Complete|8.0
69`P1007R3 <https://wg21.link/P1007R3>`__LWG``std::assume_aligned``\ San Diego* *
70`P1020R1 <https://wg21.link/P1020R1>`__LWGSmart pointer creation with default initializationSan Diego* *
71`P1032R1 <https://wg21.link/P1032R1>`__LWGMisc constexpr bitsSan Diego* *
72`P1085R2 <https://wg21.link/P1085R2>`__LWGShould Span be Regular?San Diego|Complete|8.0
73`P1123R0 <https://wg21.link/P1123R0>`__LWGEditorial Guidance for merging P0019r8 and P0528r3San Diego* *
74`P1148R0 <https://wg21.link/P1148R0>`__LWGCleaning up Clause 20San Diego* *
75`P1165R1 <https://wg21.link/P1165R1>`__LWGMake stateful allocator propagation more consistent for ``operator+(basic_string)``\ San Diego* *
76`P1209R0 <https://wg21.link/P1209R0>`__LWGAdopt Consistent Container Erasure from Library Fundamentals 2 for C++20San Diego|Complete|8.0
77`P1210R0 <https://wg21.link/P1210R0>`__LWGCompleting the Rebase of Library Fundamentals, Version 3, Working DraftSan Diego* *
78`P1236R1 <https://wg21.link/P1236R1>`__CWGAlternative Wording for P0907R4 Signed Integers are Two's ComplementSan Diego* *
79`P1248R1 <https://wg21.link/P1248R1>`__LWGRemove CommonReference requirement from StrictWeakOrdering (a.k.a Fixing Relations)San Diego* *
80`P1285R0 <https://wg21.link/P1285R0>`__LWGImproving Completeness Requirements for Type TraitsSan Diego* *
81`P1353R0 <https://wg21.link/P1353R0>`__CWGMissing feature test macrosSan Diego* *
82
83`P0339R6 <https://wg21.link/P0339R6>`__LWGpolymorphic_allocator<> as a vocabulary typeKona
84`P0340R3 <https://wg21.link/P0340R3>`__LWGMaking std::underlying_type SFINAE-friendlyKona|Complete|9.0
85`P0738R2 <https://wg21.link/P0738R2>`__LWGI Stream, You Stream, We All Stream for istream_iteratorKona
86`P0811R3 <https://wg21.link/P0811R3>`__LWGWell-behaved interpolation for numbers and pointersKona|Complete|9.0
87`P0920R2 <https://wg21.link/P0920R2>`__LWGPrecalculated hash values in lookupKonaReverted by `P1661 <https://wg21.link/P1661>`__
88`P1001R2 <https://wg21.link/P1001R2>`__LWGTarget Vectorization Policies from Parallelism V2 TS to C++20Kona
89`P1024R3 <https://wg21.link/P1024R3>`__LWGUsability Enhancements for std::spanKona|Complete|9.0
90`P1164R1 <https://wg21.link/P1164R1>`__LWGMake create_directory() IntuitiveKona
91`P1227R2 <https://wg21.link/P1227R2>`__LWGSigned ssize() functions, unsigned size() functionsKona|Complete|9.0
92`P1252R2 <https://wg21.link/P1252R2>`__LWGRanges Design CleanupKona
93`P1286R2 <https://wg21.link/P1286R2>`__CWGContra CWG DR1778Kona
94`P1357R1 <https://wg21.link/P1357R1>`__LWGTraits for [Un]bounded ArraysKona|Complete|9.0
95`P1458R1 <https://wg21.link/P1458R1>`__LWGMandating the Standard Library: Clause 16 - Language support libraryKona|Complete|9.0
96`P1459R1 <https://wg21.link/P1459R1>`__LWGMandating the Standard Library: Clause 18 - Diagnostics libraryKona|Complete|9.0
97`P1462R1 <https://wg21.link/P1462R1>`__LWGMandating the Standard Library: Clause 20 - Strings libraryKona|Complete|9.0
98`P1463R1 <https://wg21.link/P1463R1>`__LWGMandating the Standard Library: Clause 21 - Containers libraryKona
99`P1464R1 <https://wg21.link/P1464R1>`__LWGMandating the Standard Library: Clause 22 - Iterators libraryKona|Complete|9.0
100
101`P0325 <https://wg21.link/P0325>`__LWGto_array from LFTS with updatesCologne|Complete|10.0
102`P0408 <https://wg21.link/P0408>`__LWGEfficient Access to basic_stringbuf's BufferCologne
103`P0466 <https://wg21.link/P0466>`__LWGLayout-compatibility and Pointer-interconvertibility TraitsCologne
104`P0553 <https://wg21.link/P0553>`__LWGBit operationsCologne|Complete|9.0
105`P0631 <https://wg21.link/P0631>`__LWGMath ConstantsCologne|Complete|11.0
106`P0645 <https://wg21.link/P0645>`__LWGText FormattingCologne
107`P0660 <https://wg21.link/P0660>`__LWGStop Token and Joining Thread, Rev 10Cologne
108`P0784 <https://wg21.link/P0784>`__CWGMore constexpr containersCologne|Complete|12.0
109`P0980 <https://wg21.link/P0980>`__LWGMaking std::string constexprCologne
110`P1004 <https://wg21.link/P1004>`__LWGMaking std::vector constexprCologne
111`P1035 <https://wg21.link/P1035>`__LWGInput Range AdaptorsCologne
112`P1065 <https://wg21.link/P1065>`__LWGConstexpr INVOKECologne
113`P1135 <https://wg21.link/P1135>`__LWGThe C++20 Synchronization LibraryCologne|Complete|
114`P1207 <https://wg21.link/P1207>`__LWGMovability of Single-pass IteratorsCologne
115`P1208 <https://wg21.link/P1208>`__LWGAdopt source_location for C++20Cologne
116`P1355 <https://wg21.link/P1355>`__LWGExposing a narrow contract for ceil2Cologne|Complete|9.0
117`P1361 <https://wg21.link/P1361>`__LWGIntegration of chrono with text formattingCologne
118`P1423 <https://wg21.link/P1423>`__LWGchar8_t backward compatibility remediationCologne
119`P1424 <https://wg21.link/P1424>`__LWG'constexpr' feature macro concernsCologne
120`P1466 <https://wg21.link/P1466>`__LWGMiscellaneous minor fixes for chronoCologne
121`P1474 <https://wg21.link/P1474>`__LWGHelpful pointers for ContiguousIteratorCologne
122`P1502 <https://wg21.link/P1502>`__LWGStandard library header units for C++20Cologne
123`P1522 <https://wg21.link/P1522>`__LWGIterator Difference Type and Integer OverflowCologne
124`P1523 <https://wg21.link/P1523>`__LWGViews and Size TypesCologne
125`P1612 <https://wg21.link/P1612>`__LWGRelocate Endian's SpecificationCologne|Complete|10.0
126`P1614 <https://wg21.link/P1614>`__LWGThe Mothership has LandedCologne|In Progress|
127`P1638 <https://wg21.link/P1638>`__LWGbasic_istream_view::iterator should not be copyableCologne
128`P1643 <https://wg21.link/P1643>`__LWGAdd wait/notify to atomic_refCologne
129`P1644 <https://wg21.link/P1644>`__LWGAdd wait/notify to atomic<shared_ptr>Cologne
130`P1650 <https://wg21.link/P1650>`__LWGOutput std::chrono::days with 'd' suffixCologne
131`P1651 <https://wg21.link/P1651>`__LWGbind_front should not unwrap reference_wrapperCologne
132`P1652 <https://wg21.link/P1652>`__LWGPrintf corner cases in std::formatCologne
133`P1661 <https://wg21.link/P1661>`__LWGRemove dedicated precalculated hash lookup interfaceCologne|Nothing To Do|
134`P1754 <https://wg21.link/P1754>`__LWGRename concepts to standard_case for C++20, while we still canCologne
135
136`P0883 <https://wg21.link/P0883>`__LWGFixing Atomic InitializationBelfast* *
137`P1391 <https://wg21.link/P1391>`__LWGRange constructor for std::string_viewBelfast* *
138`P1394 <https://wg21.link/P1394>`__LWGRange constructor for std::spanBelfast* *
139`P1456 <https://wg21.link/P1456>`__LWGMove-only viewsBelfast* *
140`P1622 <https://wg21.link/P1622>`__LWGMandating the Standard Library: Clause 32 - Thread support libraryBelfast* *
141`P1645 <https://wg21.link/P1645>`__LWGconstexpr for numeric algorithmsBelfast* *
142`P1664 <https://wg21.link/P1664>`__LWGreconstructible_range - a concept for putting ranges back togetherBelfast* *
143`P1686 <https://wg21.link/P1686>`__LWGMandating the Standard Library: Clause 27 - Time libraryBelfast* *
144`P1690 <https://wg21.link/P1690>`__LWGRefinement Proposal for P0919 Heterogeneous lookup for unordered containersBelfast|Complete|12.0
145`P1716 <https://wg21.link/P1716>`__LWGranges compare algorithm are over-constrainedBelfast* *
146`P1718 <https://wg21.link/P1718>`__LWGMandating the Standard Library: Clause 25 - Algorithms libraryBelfast* *
147`P1719 <https://wg21.link/P1719>`__LWGMandating the Standard Library: Clause 26 - Numerics libraryBelfast* *
148`P1720 <https://wg21.link/P1720>`__LWGMandating the Standard Library: Clause 28 - Localization libraryBelfast* *
149`P1721 <https://wg21.link/P1721>`__LWGMandating the Standard Library: Clause 29 - Input/Output libraryBelfast* *
150`P1722 <https://wg21.link/P1722>`__LWGMandating the Standard Library: Clause 30 - Regular Expression libraryBelfast* *
151`P1723 <https://wg21.link/P1723>`__LWGMandating the Standard Library: Clause 31 - Atomics libraryBelfast* *
152`P1855 <https://wg21.link/P1855>`__LWGMake ``<compare>``\ freestandingBelfast* *
153`P1862 <https://wg21.link/P1862>`__LWGRanges adaptors for non-copyable iteratorsBelfast* *
154`P1865 <https://wg21.link/P1865>`__LWGAdd max() to latch and barrierBelfast* *
155`P1869 <https://wg21.link/P1869>`__LWGRename 'condition_variable_any' interruptible wait methodsBelfast* *
156`P1870 <https://wg21.link/P1870>`__LWGforwarding-range is too subtleBelfast* *
157`P1871 <https://wg21.link/P1871>`__LWGShould concepts be enabled or disabled?Belfast* *
158`P1872 <https://wg21.link/P1872>`__LWGspan should have size_type, not index_typeBelfast|Complete|10.0
159`P1878 <https://wg21.link/P1878>`__LWGConstraining Readable TypesBelfast* *
160`P1892 <https://wg21.link/P1892>`__LWGExtended locale-specific presentation specifiers for std::formatBelfast* *
161`P1902 <https://wg21.link/P1902>`__LWGMissing feature-test macros 2018-2019Belfast* *
162`P1959 <https://wg21.link/P1959>`__LWGRemove std::weak_equality and std::strong_equalityBelfast* *
163`P1960 <https://wg21.link/P1960>`__LWGNB Comment Changes Reviewed by SG1Belfast* *
164`P1961 <https://wg21.link/P1961>`__LWGHarmonizing the definitions of total order for pointersBelfast* *
165`P1965 <https://wg21.link/P1965>`__LWGBlanket Wording for Specifying "Hidden Friends"Belfast* *
166
167`P0586 <https://wg21.link/P0586>`__LWGSafe integral comparisonsPrague* *
168`P0593 <https://wg21.link/P0593>`__CWGImplicit creation of objects for low-level object manipulationPrague* *
169`P1115 <https://wg21.link/P1115>`__LWGImproving the Return Value of Erase-Like Algorithms II: Free erase/erase ifPrague|Complete|11.0
170`P1243 <https://wg21.link/P1243>`__LWGRangify New AlgorithmsPrague* *
171`P1460 <https://wg21.link/P1460>`__LWGMandating the Standard Library: Clause 20 - Utilities libraryPrague* *
172`P1739 <https://wg21.link/P1739>`__LWGAvoid template bloat for safe_ranges in combination with "subrange-y" view adaptorsPrague* *
173`P1831 <https://wg21.link/P1831>`__LWGDeprecating volatile: libraryPrague* *
174`P1868 <https://wg21.link/P1868>`__LWGwidth: clarifying units of width and precision in std::formatPrague* *
175`P1908 <https://wg21.link/P1908>`__CWGReserving Attribute Namespaces for Future UsePrague* *
176`P1937 <https://wg21.link/P1937>`__CWGFixing inconsistencies between constexpr and consteval functionsPrague* *
177`P1956 <https://wg21.link/P1956>`__LWGOn the names of low-level bit manipulation functionsPrague|Complete|12.0
178`P1957 <https://wg21.link/P1957>`__CWGConverting from ``T*``\ to bool should be considered narrowing (re: US 212)Prague* *
179`P1963 <https://wg21.link/P1963>`__LWGFixing US 313Prague* *
180`P1964 <https://wg21.link/P1964>`__LWGWording for boolean-testablePrague* *
181`P1970 <https://wg21.link/P1970>`__LWGConsistency for size() functions: Add ranges::ssizePrague* *
182`P1973 <https://wg21.link/P1973>`__LWGRename "_default_init" Functions, Rev1Prague* *
183`P1976 <https://wg21.link/P1976>`__LWGFixed-size span construction from dynamic rangePrague|Complete|11.0
184`P1981 <https://wg21.link/P1981>`__LWGRename leap to leap_secondPrague* *
185`P1982 <https://wg21.link/P1982>`__LWGRename link to time_zone_linkPrague* *
186`P1983 <https://wg21.link/P1983>`__LWGWording for GB301, US296, US292, US291, and US283Prague* *
187`P1994 <https://wg21.link/P1994>`__LWGelements_view needs its own sentinelPrague* *
188`P2002 <https://wg21.link/P2002>`__CWGDefaulted comparison specification cleanupsPrague* *
189`P2045 <https://wg21.link/P2045>`__LWGMissing Mandates for the standard libraryPrague* *
190`P2085 <https://wg21.link/P2085>`__CWGConsistent defaulted comparisonsPrague* *
191`P2091 <https://wg21.link/P2091>`__LWGIssues with range access CPOsPrague* *
192`P2101 <https://wg21.link/P2101>`__LWG'Models' subsumes 'satisfies' (Wording for US298 and US300)Prague* *
193`P2102 <https://wg21.link/P2102>`__LWGMake 'implicit expression variations' more explicit (Wording for US185)Prague* *
194`P2106 <https://wg21.link/P2106>`__LWGAlternative wording for GB315 and GB316Prague* *
195`P2116 <https://wg21.link/P2116>`__LWGRemove tuple-like protocol support from fixed-extent spanPrague|Complete|11.0