]> git.ipfire.org Git - thirdparty/gcc.git/commit
libstdc++: Fix constraint recursion in std::expected's operator== [PR119714]
authorPatrick Palka <ppalka@redhat.com>
Mon, 12 May 2025 13:15:34 +0000 (09:15 -0400)
committerPatrick Palka <ppalka@redhat.com>
Mon, 12 May 2025 13:15:34 +0000 (09:15 -0400)
commit91bc8169edd9038d78f38bd813287d72e6345c26
tree67e180564796ca95253195ddca4225c16f42db5f
parentaf062510f4179aa7b13e632f77593deee8fe29f2
libstdc++: Fix constraint recursion in std::expected's operator== [PR119714]

This std::expected friend operator== is prone to constraint recursion
after CWG 2369 for the same reason as basic_const_iterator's comparison
operators were before the r15-7757-g4342c50ca84ae5 workaround.  This
patch works around the constraint recursion here in a similar manner,
by making the function parameter of type std::expected dependent in a
trivial way.

PR libstdc++/119714
PR libstdc++/112490

libstdc++-v3/ChangeLog:

* include/std/expected (expected::operator==): Replace
non-dependent std::expected function parameter with a dependent
one of type expected<_Vp, _Er> where _Vp matches _Tp.
* testsuite/20_util/expected/119714.cc: New test.

Reviewed-by: Tomasz KamiƄski <tkaminsk@redhat.com>
Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
libstdc++-v3/include/std/expected
libstdc++-v3/testsuite/20_util/expected/119714.cc [new file with mode: 0644]