]> git.ipfire.org Git - thirdparty/gcc.git/commit
libstdc++: Implement std::pair/tuple/misc enhancements from P2321R2
authorPatrick Palka <ppalka@redhat.com>
Tue, 23 Aug 2022 17:42:37 +0000 (13:42 -0400)
committerPatrick Palka <ppalka@redhat.com>
Tue, 23 Aug 2022 17:42:37 +0000 (13:42 -0400)
commit72886fcc6269531bbf3d9a09b3d64644963bff0d
treead19ae595e927e200e464a4499b997c8e0d33660
parent02f6b405f0e9dc7a8868fecef9a048b79c433125
libstdc++: Implement std::pair/tuple/misc enhancements from P2321R2

This implements the non-<ranges> changes from P2321R2, which primarily
consist of additional converting constructors, assignment operator and
swap overloads for std::pair and std::tuple.

libstdc++-v3/ChangeLog:

* include/bits/stl_bvector.h (_Bit_reference::operator=): Define
const overload for C++23 as per P2321R2.
* include/bits/stl_pair.h (pair::swap): Likewise.
(pair::pair): Define additional converting constructors for
C++23 as per P2321R2.
(pair::operator=): Define const overloads for C++23 as per
P2321R2.
(swap): Define overload taking const pair& for C++23 as per
P2321R2.
(basic_common_reference): Define partial specialization for
pair for C++23 as per P2321R2.
(common_type): Likewise.
* include/bits/uses_allocator_args.h
(uses_allocator_construction_args): Define additional pair
overloads for C++23 as per P2321R2.
* include/std/tuple (_Tuple_impl::_Tuple_impl): Define
additional converting constructors for C++23 as per P2321R2.
(_Tuple_impl::_M_assign): Define const overloads for C++23
as per P2321R2.
(_Tuple_impl::_M_swap): Likewise.
(tuple::__constructible): Define as a convenient renaming of
_TCC<true>::__constructible.
(tuple::__convertible): As above but for _TCC<true>::__convertible.
(tuple::tuple): Define additional converting constructors for
C++23 as per P2321R2.
(tuple::operator=): Define const overloads for C++23 as per
P2321R2.
(tuple::swap): Likewise.
(basic_common_reference): Define partial specialization for
tuple for C++23 as per P2321R2.
(common_type): Likewise.
* testsuite/20_util/pair/p2321r2.cc: New test.
* testsuite/20_util/tuple/p2321r2.cc: New test.
* testsuite/23_containers/vector/bool/element_access/1.cc: New test.
libstdc++-v3/include/bits/stl_bvector.h
libstdc++-v3/include/bits/stl_pair.h
libstdc++-v3/include/bits/uses_allocator_args.h
libstdc++-v3/include/std/tuple
libstdc++-v3/testsuite/20_util/pair/p2321r2.cc [new file with mode: 0644]
libstdc++-v3/testsuite/20_util/tuple/p2321r2.cc [new file with mode: 0644]
libstdc++-v3/testsuite/23_containers/vector/bool/element_access/1.cc [new file with mode: 0644]