libstdc++: Fix P2255R2 dangling checks for std::tuple in C++17 [PR108822]
commit502a3c03e40e8920afb734c077b045f6c5efd087
authorJonathan Wakely <jwakely@redhat.com>
Fri, 19 Jan 2024 12:28:30 +0000 (19 12:28 +0000)
committerJonathan Wakely <jwakely@redhat.com>
Fri, 19 Jan 2024 19:12:38 +0000 (19 19:12 +0000)
tree92e6cbf75c07350cd03435aac46a896fdcdf2c30
parentf1e5bf0d83ee4da81b6317c6d7f1278fe7eaa5a0
libstdc++: Fix P2255R2 dangling checks for std::tuple in C++17 [PR108822]

I accidentally used && in a fold-expression instead of || which meant
that in C++17 the tuple(UElements&&...) constructor only failed its
debug assertion if all tuple elements were dangling references. Some
missing tests (noted as "TODO") meant this wasn't tested.

This fixes the fold expression and adds the missing tests.

libstdc++-v3/ChangeLog:

PR libstdc++/108822
* include/std/tuple (__glibcxx_no_dangling_refs) [C++17]: Fix
wrong fold-operator.
* testsuite/20_util/tuple/dangling_ref.cc: Check tuples with one
element and three elements. Check allocator-extended
constructors.
libstdc++-v3/include/std/tuple
libstdc++-v3/testsuite/20_util/tuple/dangling_ref.cc