diff options
| author | Osama Abdelkader <osama.abdelkader@gmail.com> | 2025-10-25 20:25:42 +0300 |
|---|---|---|
| committer | Tomasz Kamiński <tkaminsk@redhat.com> | 2025-10-29 17:09:15 +0100 |
| commit | 52e300124d2eaad0f19ccc0a49f95fd605a1de69 (patch) | |
| tree | 13d1968ed36d03d7ecd1e59553babb5bf20e8518 /contrib/gcc-changelog/git_commit.py | |
| parent | c55c1de3a9adb241e3c0dabd7d1edd8ebe9c065f (diff) | |
| download | gcc-52e300124d2eaad0f19ccc0a49f95fd605a1de69.zip gcc-52e300124d2eaad0f19ccc0a49f95fd605a1de69.tar.gz gcc-52e300124d2eaad0f19ccc0a49f95fd605a1de69.tar.bz2 | |
libstdc++: Add constructors and assignments for tuple<> with tuple-like types [PR119721]
This patch adds support for constructing and assigning tuple<> from
other empty tuple-like types (e.g., array<T, 0>), completing the C++23
tuple-like interface for the zero-element tuple specialization.
The implementation includes:
- Constructor from forwarding reference to tuple-like types
- Allocator-aware constructor from tuple-like types
- Assignment operator from tuple-like types
- Const assignment operator from tuple-like types
PR libstdc++/119721
libstdc++-v3/ChangeLog:
* include/std/tuple (tuple<>::tuple(const tuple&))
(tuple<>::operator=(const tuple&)): Define as defaulted.
(tuple<>::swap): Moved the defintion after assignments.
(tuple<>::tuple(_UTuple&&))
(tuple<>::tuple(allocator_arg_t, const _Alloc&, _UTuple&&))
(tuple<>::operator=(_UTuple&&)) [__cpp_lib_tuple_like]: Define.
(tuple<>::operator==, tuple<>::opeator<=>): Parenthesize
constrains individually.
* testsuite/23_containers/tuple/cons/119721.cc: New test for
constructors and assignments with empty tuple-like types.
* testsuite/20_util/tuple/requirements/empty_trivial.cc:
New test verifying tuple<> remains trivially copyable.
Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
Co-authored-by: Tomasz Kamiński <tkaminsk@redhat.com>
Signed-off-by: Osama Abdelkader <osama.abdelkader@gmail.com>
Signed-off-by: Tomasz Kamiński <tkaminsk@redhat.com>
Diffstat (limited to 'contrib/gcc-changelog/git_commit.py')
0 files changed, 0 insertions, 0 deletions
