From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from us-smtp-delivery-1.mimecast.com (us-smtp-delivery-1.mimecast.com [207.211.31.120]) by sourceware.org (Postfix) with ESMTP id CC065396D833 for ; Thu, 23 Apr 2020 20:46:35 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org CC065396D833 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-169-lHvOuXzLOTS1JJAB7owVkA-1; Thu, 23 Apr 2020 16:46:25 -0400 X-MC-Unique: lHvOuXzLOTS1JJAB7owVkA-1 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 82058107ACF2; Thu, 23 Apr 2020 20:46:24 +0000 (UTC) Received: from localhost (unknown [10.33.36.131]) by smtp.corp.redhat.com (Postfix) with ESMTP id A8A485D70B; Thu, 23 Apr 2020 20:46:23 +0000 (UTC) Date: Thu, 23 Apr 2020 21:46:22 +0100 From: Jonathan Wakely To: libstdc++@gcc.gnu.org, gcc-patches@gcc.gnu.org Subject: Re: [committed 0/8] libstdc++: Add/update/fix feature test macros Message-ID: <20200423204622.GS71320@redhat.com> References: MIME-Version: 1.0 In-Reply-To: X-Clacks-Overhead: GNU Terry Pratchett X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: multipart/mixed; boundary="2WS97oupGEGbYNpW" Content-Disposition: inline X-Spam-Status: No, score=-28.4 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, KAM_SHORT, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=unavailable autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libstdc++@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libstdc++ mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 23 Apr 2020 20:46:42 -0000 --2WS97oupGEGbYNpW Content-Type: text/plain; charset=us-ascii; format=flowed Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On 22/04/20 22:57 +0100, Jonathan Wakely wrote: >This series of patches fixes a number of omissions and errors in the >feature test macros we define. > >Tested powerpc64le-linux, committed to master. > >Jonathan Wakely (8): > libstdc++: Update value of __cpp_lib_jthread macro > libstdc++: Remove non-standard feature test macros > libstdc++: Add missing feature test macros > libstdc++: Rename __cpp_lib_constexpr_invoke macro > libstdc++: Update __cpp_lib_concepts value > libstdc++: Do not define __cpp_lib_constexpr_algorithms in > libstdc++: Update (and revert) value of __cpp_lib_array_constexpr > libstdc++: Define __cpp_lib_execution feature test macro I've backported some of these changes (and other ones related to feature test macros) to the gcc-9 branch. This means both master and gcc-9 should define exactly the feature test macros for the features they support. With that done, I've also updated the C++20 status table in the docs (only for master so far, but I'll do it for gcc-9 too). The attached doc patch has been committed to master. --2WS97oupGEGbYNpW Content-Type: text/x-patch; charset=us-ascii Content-Disposition: attachment; filename="patch.txt" Content-Transfer-Encoding: quoted-printable commit be0363c80f7ac93f1dbd00da6beb9ce0eed96d9d Author: Jonathan Wakely Date: Thu Apr 23 21:39:33 2020 +0100 libstdc++: Update C++20 library status docs =20 This reorganises the C++20 status table, grouping the proposals by category. It also adds more proposals, and documents all the feature test macros for C++20 library changes. =20 * doc/xml/manual/status_cxx2020.xml: Update C++20 status table. * doc/html/*: Regenerate. diff --git a/libstdc++-v3/doc/xml/manual/status_cxx2020.xml b/libstdc++-v3/= doc/xml/manual/status_cxx2020.xml index 17f28887119..ade77cbb80b 100644 --- a/libstdc++-v3/doc/xml/manual/status_cxx2020.xml +++ b/libstdc++-v3/doc/xml/manual/status_cxx2020.xml @@ -1,8 +1,8 @@ -
+
=20 -C++ 202a +C++ 2020 ISO C++ 2020 @@ -26,17 +26,20 @@ not in any particular release. =20 The following table lists new library features that have been accepted int= o -the C++2a working draft. The "Proposal" column provides a link to the +the C++20 working draft. The "Proposal" column provides a link to the ISO C++ committee proposal that describes the feature, while the "Status" column indicates the first version of GCC that contains an implementation = of this feature (if it has been implemented). -The "SD-6 Feature Test" column shows the corresponding macro or header fro= m +A dash (—) in the status column indicates that the changes in the p= roposal +either do not affect the code in libstdc++, or the changes are not require= d for conformance. +The "SD-6 Feature Test / Notes" column shows the corresponding macro or he= ader from SD= -6: -Feature-testing recommendations for C++. +Feature-testing recommendations for C++ (where applicable) +or any notes about the implementation. =20 - -C++ 2020 Implementation Status +
+C++ 2020 Library Features =20 @@ -48,44 +51,309 @@ Feature-testing recommendations for C++. Library Feature Proposal Status - SD-6 Feature Test + SD-6 Feature Test / Notes =20 =20 - Endian just Endian - - -=09P0463R1 -=09 + + Compile-time programming - 8.1 - + + + + Add constexpr modifiers to functions in <algorithm= > and <utility> Headers + + + P0202R3 + + 10.1 + __cpp_lib_constexpr_algorithms >=3D 201703L = + + + + Constexpr for swap and swap related functions = + + + P0879R0 + + 10.1 + __cpp_lib_constexpr_algorithms >=3D 201806L = + + + + Constexpr for std::complex + + + P0415R1 + + 9.1 + __cpp_lib_constexpr_complex >=3D 201711L (si= nce 9.4, see Note 1) + + + + P0595R2 std::is_constant_evaluated() + + + P0595R2 + + 9.1 + __cpp_lib_is_constant_evaluated >=3D 201811L= + + + + More constexpr containers + + + P0784R7 + + 10.1 + __cpp_lib_constexpr_dynamic_alloc >=3D 201907L =20 - Extending make_shared to Support Arrays + Making std::string constexpr - -=09P0674R1 -=09 + + P0980R1 + + + __cpp_lib_constexpr_string >=3D 201907L + + + + + Making std::vector constexpr + + + P1004R2 + + + __cpp_lib_constexpr_vector >=3D 201907L + + + + Constexpr in std::pointer_traits + + + P1006R1 + + 9.1 + __cpp_lib_constexpr_memory >=3D 201811L (sin= ce 9.4, see Note 1) + + + + constexpr for <numeric> algorithms + + + P1645R1 + + 10.1 + __cpp_lib_constexpr_numeric >=3D 201911L + + + + Constexpr iterator requirements + + + P0858R0 + + 9.1 + + + __cpp_lib_array_constexpr >=3D 201803L + __cpp_lib_string_view >=3D 201803L + (both since 9.4, see Note 1) + + + + + + constexpr comparison operators for std::= array + + + P1023R0 + + 10.1 + __cpp_lib_array_constexpr >=3D 201806 + + + + Misc constexpr bits + + + P1032R1 + + 10.1 + + + __cpp_lib_array_constexpr >=3D 201811L + __cpp_lib_constexpr_functional >=3D 201811L<= /code> + __cpp_lib_constexpr_iterator >=3D 201811L + __cpp_lib_constexpr_string_view >=3D 201811L= + __cpp_lib_constexpr_tuple >=3D 201811L + __cpp_lib_constexpr_utility >=3D 201811L + + + + + + constexpr INVOKE + + + P1065R2 + + 10.1 + __cpp_lib_constexpr_functional >=3D 201907L = + + + + + Transformation Trait remove_cvref + + + P0550R2 + + 9.1 + __cpp_lib_remove_cvref >=3D 201711L (since 9= .4, see Note 1) + + + + Implicit conversion traits and utility functions + + + P0758R1 + + 9.1 + __cpp_lib_is_nothrow_convertible >=3D 201806L (since 9.4, see Note 1) + + + + The identity metafunction + + + P0887R1 + + 9.1 + __cpp_lib_type_identity >=3D 201806L (since = 9.4, see Note 1) + + + + + unwrap_ref_decay and unwrap_reference + + + P0318R1 + + 9.1 + __cpp_lib_unwrap_ref >=3D 201811L (since 9.4= , see Note 1) + + + + + Improving Completeness Requirements for Type Traits + + + P1285R0 + + Partial + + + + + Missing feature test macros + + + P1353R0 + + 9.1 + + + + + Making std::underlying_type SFINAE-friendly + + + P0340R3 + + 9.1 + + + + + Traits for [Un]bounded Arrays + + + P1357R1 + + 9.1 + __cpp_lib_bounded_array_traits >=3D 201902L = + + + + + Layout-compatibility and pointer-interconvertibility traits = + + + P0466R5 + + + __cpp_lib_is_layout_compatible >=3D 201907L<= /code> + __cpp_lib_is_pointer_interconvertible >=3D 2= 01907L + + + + + + Integrating feature-test macros into the C++ WD + + + P0941R2 + + 5.1 =20 + + <version> + + + P0754R2 + + 9.1 + __has_include(<version>) + + + + + + Synchronization + + + + + Atomic Ref + + + P0019R8 + + 10.1 + __cpp_lib_atomic_ref >=3D 201806L + + Floating Point Atomic -=09P0020R6 -=09 + P0020R6 10.1 - + __cpp_lib_atomic_float >=3D 201711L =20 @@ -93,98 +361,41 @@ Feature-testing recommendations for C++. C++ Synchronized Buffered Ostream -=09P0053R7 -=09 + P0053R7 - + __cpp_lib_syncbuf >=3D 201711L =20 - Add constexpr modifiers to functions in <algorithm= > and <utility> Headers + + Manipulators for C++ Synchronized Buffered Ostream - -=09P0202R3 -=09 + + P0753R2 - 10.1 - __cpp_lib_constexpr_algorithms >=3D 201703L = - - - - Constexpr for std::complex - - -=09P0415R1 -=09 - - 9.1 - + + __cpp_lib_syncbuf >=3D 201803L =20 Make std::memory_order a scoped enumeration -=09P0439R0 -=09 + P0439R0 9.1 =20 - String Prefix and Suffix Checking + + The Curious Case of Padding Bits, Featuring Atomic Compare-= and-Exchange - -=09P0457R2 -=09 + + P0528R3 - 9.1 - - - - - Transformation Trait remove_cvref - - -=09P0550R2 -=09 - - 9.1 - - - - - nodiscard in the Library - - -=09P0600R1 -=09 - - 9.1 - - - - - de-pessimize legacy algorithms with std::move = - - -=09P0616R0 -=09 - - 9.1 - - - - - Utility to convert a pointer to a raw pointer - - -=09P0653R2 -=09 - - 8.1 + =20 @@ -193,57 +404,156 @@ Feature-testing recommendations for C++. Atomic shared_ptr -=09P0718R2 -=09 + P0718R2 - + __cpp_lib_atomic_shared_ptr >=3D 201711L =20 - - Deprecate POD + std::stop_token and std::jthread - -=09P0767R1 -=09 - - - - - - - - Library Support for the Spaceship (Comparison) Operator - - -=09P0768R1 -=09 - - - - - - - Treating Unnecessary decay - - -=09P0777R1 -=09 - - 9.1 - - - - - <span> - - -=09P0122R7 -=09 + + P0660R10 10.1 - __cpp_lib_span >=3D 201803L + __cpp_lib_jthread >=3D 201907L + + + + Rename condition_variable_any interruptible wai= t methods + + + P1869R1 + + 10.1 + __cpp_lib_jthread >=3D 201911L + + + + + Atomic waiting and notifying, std::semaphore, std::latch and= std::barrier + + + P1135R6 + + + + + __cpp_lib_atomic_lock_free_type_aliases >=3D= 201907L + __cpp_lib_atomic_flag_test >=3D 201907L + __cpp_lib_atomic_wait >=3D 201907L + __cpp_lib_semaphore >=3D 201907L + __cpp_lib_latch >=3D 201907L = + __cpp_lib_barrier >=3D 201907L + + + + + + Fixing Atomic Initialization + + + P0883R2 + + 10.1 + __cpp_lib_atomic_value_initialization >=3D 201911L<= /code> + + + + + + + Ranges and Concepts + + + + + Standard Library Concepts + + + P0898R3 + + 10.1 + __cpp_lib_concepts >=3D 201806L + + + + Rename concepts to standard_case for C++20, while we still = can + + + P1754R1 + + 10.1 + __cpp_lib_concepts >=3D 201907L + + + + Wording for boolean-testable + + + P1964R2 + + 10.1 + __cpp_lib_concepts >=3D 202002L + + + + The One Ranges Proposal + + + P0896R4 + + 10.1 + __cpp_lib_ranges >=3D 201811L + + + + Input Range Adaptors + + + P1035R7 + + 10.1 + __cpp_lib_ranges >=3D 201907L + + + + ranges compare algorithm are over-constrained = + + + P1716R3 + + 10.1 + __cpp_lib_ranges >=3D 201911L + + + + Remove CommonReference requirement from StrictWeakOrdering = (a.k.a Fixing Relations) + + + P1248R1 + + 10.1 + + + + + Ranges Design Cleanup + + + P1252R2 + + 10.1 + + + + + + + + Time, dates, calendars, time zones + =20 @@ -251,43 +561,234 @@ Feature-testing recommendations for C++. Extending chrono to Calendars and Time Zones -=09P0355R7 -=09 + P0355R7 - - + + __cpp_lib_chrono >=3D 201803L =20 - Thou Shalt Not Specialize std Function Templates! + Miscellaneous minor fixes for chrono - -=09P0551R3 -=09 + + P1466R3 - + + __cpp_lib_chrono >=3D 201907L + + + + <chrono> zero(), min(= ), and max() should be noexcept + + + P0972R0 + + 9.1 =20 + + + + Three-way comparison + + + + + Library Support for the Spaceship (Comparison) Operator + + + P0768R1 + + 10.1 + __cpp_lib_three_way_comparison >=3D 201711L = + + + + Symmetry for spaceship + + + P0905R1 + + 10.1 + + + + + Adding <=3D> to the standard library + + + P1614R2 + + 10.1 + + __cpp_lib_three_way_comparison >=3D 201907L + + + + + + + Strings and text + + + - Manipulators for C++ Synchronized Buffered Ostream + string::reserve Should Not Shrink - -=09P0753R2 -=09 + + P0966R1 =20 - <version> + char8_t: A type for UTF-8 characters and strin= gs - -=09P0754R2 -=09 + + P0482R6 + + 9.1 + __cpp_lib_char8_t >=3D 201811L + + + + char8_t backward compatibility remediation + + + P1423R3 + + 10.1 + __cpp_lib_char8_t >=3D 201907L + + + + + Text formatting + + + P0645R10 + + + + __cpp_lib_format >=3D 201907L + + + + + + Integration of chrono with text formatting + + + P1361R2 + + + + __cpp_lib_format >=3D 201907L + + + + + + Printf corner cases in std::format + + + P1652R1 + + + + __cpp_lib_format >=3D 201907L + + + + + String Prefix and Suffix Checking + + + P0457R2 + + 9.1 + __cpp_lib_starts_ends_with >=3D 201711L (sin= ce 9.4, see Note 1) + + + + + Update The Reference To The Unicode Standard + + + P1025R1 + + + + + + + + + Containers + + + + + span: bounds-safe views for sequences of objects + + + P0122R7 + + 10.1 + __cpp_lib_span >=3D 201803L + + + + + Usability Enhancements for std::span + + + + P1024R3 + + 10.1 + __cpp_lib_span >=3D 201902L + + + + Should Span be Regular? + + + P1085R2 + + 10.1 + + + + + Fixed-size <span> construction from dynam= ic range + + + P1976R2 + + 10.1 + __cpp_lib_span >=3D 202002L + + + + std::to_array + + + P0325R4 + + 10.1 + __cpp_lib_to_array >=3D 201907L + + + + Checking for Existence of an Element in Associative Contain= ers + + + P0458R2 9.1 @@ -298,372 +799,111 @@ Feature-testing recommendations for C++. Comparing Unordered Containers -=09P0809R0 -=09 + P0809R0 =20 - Constexpr iterator requirements + + Heterogeneous lookup for unordered containers - -=09P0858R0 -=09 + + P0919R3 + + + __cpp_lib_generic_unordered_lookup >=3D 201811 + + + + Adopt Consistent Container Erasure from Library Fundamental= s 2 for C++20 + + + P1209R0 9.1 - __cpp_lib_string_view >=3D 201803L - and __cpp_lib_array_constexpr >=3D 201803L - - - - - Symmetry for spaceship - - -=09P0905R1 -=09 - - - - - - - - string::reserve Should Not Shrink - - -=09P0966R1 -=09 - - - - - - - Atomic Ref - - -=09P0019R8 -=09 - - 10.1 - __cpp_lib_atomic_ref >=3D 201806L - - - - Checking for Existence of an Element in Associative Contain= ers - - -=09P0458R2 -=09 - - 9.1 - - - - - LWG 2511: guaranteed copy elision for piecewise constructio= n - - -=09P0475R1 -=09 - - 7.1 - - - - - - Bit-casting object representations - - -=09P0476R2 -=09 - - - - - - - - The Curious Case of Padding Bits, Featuring Atomic Compare-= and-Exchange - - -=09P0528R3 -=09 - - - - - - - - Support for contract based programming in C++ - - -=09P0542R5 -=09 - - - - - - - Integral power-of-2 operations - - -=09P0556R3 -=09 - - 9.1 - - - - - - Reviewing Deprecated Facilities of C++17 for C++20 - - -=09P0619R4 -=09 - - - + __cpp_lib_erase_if >=3D 201811L =20 Improving the Return Value of Erase-Like Algorithms -=09P0646R1 -=09 + P0646R1 9.1 __cpp_lib_list_remove_return_type >=3D 201806L =20 + + Improving the Return Value of Erase-Like Algorithms II: Fre= e erase/erase_if + + + P1115R3 + + 9.1 + + + __cpp_lib_erase_if >=3D 202002L + (defined to 201900L for GCC 9.1 and 9.2 = so use > 201811L) + + + + + + Signed ssize() functions, unsigned size() functions + + + P1227R2 + + 10.1 + __cpp_lib_ssize >=3D 201902L + + + + + + Memory management + + + + + Utility to convert a pointer to a raw pointer + + + P0653R2 + + 8.1 + __cpp_lib_to_address >=3D 201711L (since 9.4= , see Note 1) + + + + + Extending make_shared to Support Arrays + + + P0674R1 + + + __cpp_lib_shared_ptr_arrays >=3D 201707L + + Efficient sized delete for variable sized classes -=09P0722R3 -=09 + P0722R3 9.1 __cpp_lib_destroying_delete >=3D 201806L =20 - - Implicit conversion traits and utility functions - - -=09P0758R1 -=09 - - 9.1 - - - - - fpos Requirements - - -=09P0759R1 -=09 - - Note 1 - - - - - - Add shift to <algorithm> - - -=09P0769R2 -=09 - - - - - - - - Standard Library Specification in a Concepts and Contracts = World - - -=09P0788R3 -=09 - - - - - - - Constexpr for swap and swap related functions = - - -=09P0879R0 -=09 - - 10.1 - __cpp_lib_constexpr_algorithms >=3D 201806L = - - - - The identity metafunction - - -=09P0887R1 -=09 - - 9.1 - - - - - explicit(bool) - - -=09P0892R2 -=09 - - Note 1 - - - - - Standard Library Concepts - - -=09P0898R3 -=09 - - 10.1 - __cpp_lib_concepts >=3D 201806L - - - - Eradicating unnecessarily explicit default constructors fro= m the standard library - - -=09P0935R0 -=09 - - 9.1 - - - - - Integrating feature-test macros into the C++ WD - - -=09P0941R2 -=09 - - 5.1 - - - - - constexpr comparison operators for std::= array - - -=09P1023R0 -=09 - - 10.1 - - - - - - Update The Reference To The Unicode Standard - - -=09P1025R1 -=09 - - - - - - - - Consistency improvements for <=3D> and o= ther comparison operators - - -=09P1120R0 -=09 - - - - - - - unwrap_ref_decay and unwrap_reference - - -=09P0318R1 -=09 - - 9.1 - - - - - Simplified partial function application - - -=09P0356R5 -=09 - - 9.1 - __cpp_lib_bind_front >=3D 201811L - - - - reference_wrapper for incomplete types - - -=09P0357R3 -=09 - - 9.1 - - - - - char8_t: A type for UTF-8 characters and strin= gs - - -=09P0482R6 -=09 - - 9.1 - __cpp_lib_char8_t >=3D 201811L - - - - - Fixing operator>>(basic_istream&, CharT*) (LWG 2499) - - -=09P0487R1 -=09 - - - - - Utility functions to implement uses-allocator construction = -=09P0591R4 -=09 + P0591R4 9.1 @@ -672,44 +912,217 @@ Feature-testing recommendations for C++. =20 - P0595R2 std::is_constant_evaluated() + std::assume_aligned - -=09P0595R2 -=09 + + P1007R3 9.1 - + __cpp_lib_assume_aligned >=3D 201811L (since= 9.4, see Note 1) =20 - variant and optional should propa= gate copy/move triviality + + Smart pointer creation with default initialization - -=09P0602R4 -=09 + + P1020R1 - 8.3 - + + __cpp_lib_smart_ptr_for_overwrite >=3D 201811L =20 - A sane variant converting constructor + Make stateful allocator propagation more consistent for operator+(basic_string) - -=09P0608R3 -=09 + + P1165R1 10.1 =20 - visit<R>: Explicit Return Type for visit - -=09P0655R1 -=09 + polymorphic_allocator<> as a vocabula= ry type + + + + P0339R6 + + 9.1 + + __cpp_lib_polymorphic_allocator >=3D 201902L (since = 9.4, see Note 1) + + + + + LWG 2511: guaranteed copy elision for piecewise constructio= n + + + P0475R1 + + 7.1 + + + + + + + Miscellaneous + + + + + nodiscard in the Library + + + P0600R1 + + 9.1 + + + + + de-pessimize legacy algorithms with std::move = + + + P0616R0 + + 9.1 + + + + + Deprecate POD + + + P0767R1 + + 10.1 + + + + + Treating Unnecessary decay + + + P0777R1 + + 9.1 + + + + + + Thou Shalt Not Specialize std Function Templates! + + + P0551R3 + + + + + + + + Bit-casting object representations + + + P0476R2 + + + __cpp_lib_bit_cast >=3D 201806L + + + + Integral power-of-2 operations + + + P0556R3 + + 9.1 + __cpp_lib_int_pow2 >=3D 201806L (since 9.4, = see Note 1) + + + + On the names of low-level bit manipulation functions + + + P1956R1 + + 10.1 + __cpp_lib_int_pow2 >=3D 202002L + + + + Safe integral comparisons + + + P0586R2 + + 10.1 + __cpp_lib_integer_comparison_functions >=3D 202002L= + + + + + Reviewing Deprecated Facilities of C++17 for C++20 + + + P0619R4 + + + + + + + fpos Requirements + + + P0759R1 + + + + + + + + Add shift to <algorithm> + + + P0769R2 + + 10.1 + __cpp_lib_shift >=3D 201806L + + + + + Standard Library Specification in a Concepts and Contracts = World + + + P0788R3 + + + + + + + explicit(bool) + + + P0892R2 + + + + + + + Eradicating unnecessarily explicit default constructors fro= m the standard library + + + P0935R0 9.1 @@ -719,124 +1132,100 @@ Feature-testing recommendations for C++. std::function move constructor should be noexcept -=09P0771R1 -=09 + P0771R1 7.2 =20 - - The One Ranges Proposal + Simplified partial function application - -=09P0896R4 -=09 + + P0356R5 + + 9.1 + __cpp_lib_bind_front >=3D 201811L + + + + bind_front should not unwrap reference_w= rapper + + + P1651R0 + + 9.3 + __cpp_lib_bind_front >=3D 201907L + + + + reference_wrapper for incomplete types + + + P0357R3 + + 9.1 + + + + + + Fixing operator>>(basic_istream&, CharT*) (LWG 2499) + + + P0487R1 =20 + + variant and optional should propa= gate copy/move triviality + + + P0602R4 + + 8.3 + + + + + A sane variant converting constructor + + + P0608R3 + + 10.1 + + + + + visit<R>: Explicit Return Type for visit + + + P0655R1 + + 9.1 + + + P0899R1 - LWG 3016 is not a defect -=09P0899R1 -=09 + P0899R1 7.1 =20 - - - Heterogeneous lookup for unordered containers - - -=09P0919R3 -=09 - - - - - - - <chrono> zero(), min(= ), and max() should be noexcept - - -=09P0972R0 -=09 - - 9.1 - - - - - Constexpr in std::pointer_traits - - -=09P1006R1 -=09 - - 9.1 - - - - - std::assume_aligned - - -=09P1007R3 -=09 - - 9.1 - - - - - - Smart pointer creation with default initialization - - -=09P1020R1 -=09 - - - - - - - - Misc constexpr bits - - -=09P1032R1 -=09 - - - - - - - Should Span be Regular? - - -=09P1085R2 -=09 - - 10.1 - __cpp_lib_span >=3D 201902L - - Editorial Guidance for merging P0019r8 and P0528r3 -=09P1123R0 -=09 + P1123R0 - Note 1 + =20 @@ -845,142 +1234,43 @@ Feature-testing recommendations for C++. Cleaning up Clause 20 -=09P1148R0 -=09 + P1148R0 =20 - - Make stateful allocator propagation more consistent for operator+(basic_string) - - -=09P1165R1 -=09 - - 10.1 - - - - - Adopt Consistent Container Erasure from Library Fundamental= s 2 for C++20 - - -=09P1209R0 -=09 - - 9.1 - __cpp_lib_erase_if >=3D 201811L - - Completing the Rebase of Library Fundamentals, Version 3, W= orking Draft -=09P1210R0 -=09 + P1210R0 =20 - Alternative Wording for P0907R4 Signed Integers are Two's C= omplement -=09P1236R1 -=09 + P1236R1 - - + + =20 - - Remove CommonReference requirement from StrictWeakOrdering = (a.k.a Fixing Relations) - - -=09P1248R1 -=09 - - - - - - - - Improving Completeness Requirements for Type Traits - - -=09P1285R0 -=09 - - Partial - - - - - Well-behaved interpolation for numbers and pointers - - -=09P0811R3 -=09 - - 9.1 - __cpp_lib_interpolate >=3D 201902L - - - - Missing feature test macros - - -=09P1353R0 -=09 - - 9.1 - - - - - - polymorphic_allocator<> - as a vocabulary type - - - - P0339R6 -=09 - - 9.1 - - - - - Making std::underlying_type SFINAE-friendly - - - P0340R3 -=09 - - 9.1 - - - - - I Stream, You Stream, We All Stream for istream_iterator - P0738R2 -=09 + P0738R2 - + 10.1 =20 @@ -991,11 +1281,10 @@ Feature-testing recommendations for C++. - P1458R1 -=09 + P1458R1 - - Note 1 + + =20 @@ -1005,11 +1294,10 @@ Feature-testing recommendations for C++. - P1459R1 -=09 + P1459R1 - - Note 1 + + =20 @@ -1019,11 +1307,10 @@ Feature-testing recommendations for C++. - P1462R1 -=09 + P1462R1 - - Note 1 + + =20 @@ -1033,10 +1320,9 @@ Feature-testing recommendations for C++. - P1463R1 -=09 + P1463R1 - 10 + 10.1 =20 @@ -1048,8 +1334,7 @@ Feature-testing recommendations for C++. - P1464R1 -=09 + P1464R1 @@ -1060,212 +1345,84 @@ Feature-testing recommendations for C++. P1164R1 -=09 + 8.3 Treated as a DR for C++17 =20 - Target Vectorization Policies from Parallelism V2 TS to C++20 - P1001R2 -=09 - - - - - - - Signed ssize() functions, unsigned size() functions - - - P1227R2 -=09 - - 10.1 - - - - - - Ranges Design Cleanup - - - P1252R2 -=09 - - - - - - - - Usability Enhancements for std::span - - - - P1024R3 -=09 - - 10.1 - __cpp_lib_span >=3D 201902L - - - - Traits for [Un]bounded Arrays - - - P1357R1 -=09 + P1001R2 9.1 - __cpp_lib_bounded_array_traits >=3D 201902L = + __cpp_lib_execution >=3D 201902L (since 9.4,= see Note 1) =20 - std::to_array + Merge Coroutines TS into C++20 working draft - -=09P0325R4 -=09 + + P0912R5 10.1 - __cpp_lib_to_array >=3D 201907L + __cpp_lib_coroutines >=3D 201902L + + + + Endian just Endian + + + P0463R1 + + 8.1 + __cpp_lib_endian >=3D 201907L =20 Bit operations -=09P0553R4 -=09 + P0553R4 10.1 - __cpp_lib_bitops >=3D 201907L + __cpp_lib_bitops >=3D 201907L (since 9.4, se= e Note 1) + + + + Well-behaved interpolation for numbers and pointers + + + P0811R3 + + 9.1 + __cpp_lib_interpolate >=3D 201902L =20 Mathematical constants -=09P0631R8 -=09 + P0631R8 10.1 __cpp_lib_math_constants >=3D 201907L =20 - - - Layout-compatibility and pointer-interconvertibility traits = - - -=09P0466R5 -=09 - - - - __cpp_lib_is_layout_compatible >=3D 201907L, - __cpp_lib_is_layout_interconvertible >=3D 201907L, - - - - - std::stop_token and std::jthread - - -=09P0660R10 -=09 - - 10.1 - __cpp_lib_jthread >=3D 201907L - - - - - Text formatting - - -=09P0645R10 -=09 - - - - __cpp_lib_format >=3D 201907L, - - - - - constexpr std::invoke and related utilities - - -=09P1065R2 -=09 - - 10.1 - __cpp_lib_constexpr_invoke >=3D 201907L - - - - constexpr std::allocator and related utilities - - -=09P0784R7 -=09 - - 10.1 - __cpp_constexpr_dynamic_alloc >=3D 201907L <= /entry> - - - - - Atomic waiting and notifying, std::semaphore, std::latch and= std::barrier - - -=09P1135R6 -=09 - - - - __cpp_lib_atomic_lock_free_type_aliases >=3D 201907L in <atomic>, - __cpp_lib_atomic_flag_test >=3D 201907L in <ato= mic>, - __cpp_lib_atomic_wait >=3D 201907L in <atomic&g= t;, - __cpp_lib_semaphore >=3D 201907L in <semaphore&= gt;, - __cpp_lib_latch >=3D 201907L in <latch>, - __cpp_lib_barrier >=3D 201907L in <barrier> - - - std::source_location -=09P1208R6 -=09 + P1208R6 - __cpp_lib_source_location >=3D 201907L, - - - - - - Adding <=3D> to the standard library - - -=09P1614R2 -=09 - - - - __cpp_lib_spaceship >=3D 201907L, + __cpp_lib_source_location >=3D 201907L =20 @@ -1274,8 +1431,7 @@ Feature-testing recommendations for C++. Efficient access to std::basic_stringbuf's Buffer -=09P0408R7 -=09 + P0408R7 @@ -1286,23 +1442,9 @@ Feature-testing recommendations for C++.
=20 -Note 1: The changes in the proposal either do not affect the code in libst= dc++, -or the changes are not required for conformance. +Note 1: This feature is supported in older releases but the +__cpp_lib macro is not defined to the right value +(or not defined at all) until the version shown in parentheses. =20 - -
C++ 1998/2003 Implementation - Specific Behavior, C++ - 2011 Implementation Specific Behavior and C++ 2017 Implementation Specific - Behavior. - This section only documents behaviour which is new in the 202a draft= . - - - -
-
--2WS97oupGEGbYNpW--