libstdc++: elements_view's sentinel and iterator not comparable [LWG 3406]
authorPatrick Palka <ppalka@redhat.com>
Thu, 27 Aug 2020 01:52:58 +0000 (21:52 -0400)
committerPatrick Palka <ppalka@redhat.com>
Thu, 27 Aug 2020 01:52:58 +0000 (21:52 -0400)
commit4be16d1c1cfa6d151d2853ce509c1a797189c9ad
treeeddddfb14e9806e18e739b3618ae1132705fa1e1
parent97ab5daa6c1186d3b10872cc1d5b05da247d102c
libstdc++: elements_view's sentinel and iterator not comparable [LWG 3406]

This implements the proposed resolution for LWG 3406, and adds a
testcase for the example from P1994R1.

libstdc++-v3/ChangeLog:

* include/std/ranges (elements_view::begin): Adjust constraints.
(elements_view::end): Likewise.
(elements_view::_Sentinel::operator==): Templatize to take both
_Iterator<true> and _Iterator<false>.
(elements_view::_Sentinel::operator-): Likewise.
* testsuite/std/ranges/adaptors/elements.cc: Add testcase for
the example from P1994R1.
* testsuite/std/ranges/adaptors/lwg3406.cc: New test.
libstdc++-v3/include/std/ranges
libstdc++-v3/testsuite/std/ranges/adaptors/elements.cc
libstdc++-v3/testsuite/std/ranges/adaptors/lwg3406.cc [new file with mode: 0644]