https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119721
--- Comment #3 from GCC Commits <cvs-commit at gcc dot gnu.org> --- The master branch has been updated by Tomasz Kaminski <[email protected]>: https://gcc.gnu.org/g:52e300124d2eaad0f19ccc0a49f95fd605a1de69 commit r16-4710-g52e300124d2eaad0f19ccc0a49f95fd605a1de69 Author: Osama Abdelkader <[email protected]> Date: Sat Oct 25 20:25:42 2025 +0300 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 <[email protected]> Co-authored-by: Tomasz KamiÅski <[email protected]> Signed-off-by: Osama Abdelkader <[email protected]> Signed-off-by: Tomasz KamiÅski <[email protected]>
