libstdc++: Simplify constraints on std::compare_three_way
authorJonathan Wakely <jwakely@redhat.com>
Wed, 29 Jan 2020 13:56:49 +0000 (13:56 +0000)
committerJonathan Wakely <jwakely@redhat.com>
Wed, 29 Jan 2020 13:56:49 +0000 (13:56 +0000)
commitf214ffb336d582a66149068a2a96b7fcf395b5de
tree1cf499bba1c63de4edf244c2387cb30777eceaf8
parent83b0201035cfdc1d4d80153f4e19ec98cf059941
libstdc++: Simplify constraints on std::compare_three_way

The __3way_builtin_ptr_cmp concept can use three_way_comparable_with to
check whether <=> is valid. Doing that makes it obvious that the
disjunction on compare_three_way::operator() is redundant, because
the second constraint subsumes the first.

The workaround for PR c++/91073 can also be removed as that bug is fixed
now.

* libsupc++/compare (__detail::__3way_builtin_ptr_cmp): Use
three_way_comparable_with.
(__detail::__3way_cmp_with): Remove workaround for fixed bug.
(compare_three_way::operator()): Remove redundant constraint from
requires-clause.
(__detail::_Synth3way::operator()): Use three_way_comparable_with
instead of workaround.
* testsuite/18_support/comparisons/object/93479.cc: Prune extra
output due to simplified constraints on compare_three_way::operator().
libstdc++-v3/ChangeLog
libstdc++-v3/libsupc++/compare
libstdc++-v3/testsuite/18_support/comparisons/object/93479.cc