aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Palka <ppalka@redhat.com>2021-10-20 21:34:21 -0400
committerPatrick Palka <ppalka@redhat.com>2021-10-20 21:34:21 -0400
commit6667274b0593a64dd3de3c7c3565bec42af35b62 (patch)
tree5f317ec7a8c3cceaa904acbe097ee213ce22e998
parenta2c2dcc6ca205a8c5c76b04ef2eb4fb097dcb069 (diff)
downloadgcc-6667274b0593a64dd3de3c7c3565bec42af35b62.zip
gcc-6667274b0593a64dd3de3c7c3565bec42af35b62.tar.gz
gcc-6667274b0593a64dd3de3c7c3565bec42af35b62.tar.bz2
libstdc++: Implement LWG 3535 changes to ranges::join_view
libstdc++-v3/ChangeLog: * include/std/ranges (join_view::__iter_cat::_S_iter_cat): Adjust criteria for returning bidirectional_iterator_tag as per LWG 3535. (join_view::_Iterator::_S_iter_concept): Likewise.
-rw-r--r--libstdc++-v3/include/std/ranges6
1 files changed, 4 insertions, 2 deletions
diff --git a/libstdc++-v3/include/std/ranges b/libstdc++-v3/include/std/ranges
index 273699a..c1519c7 100644
--- a/libstdc++-v3/include/std/ranges
+++ b/libstdc++-v3/include/std/ranges
@@ -2523,7 +2523,8 @@ namespace views::__adaptor
using _OuterCat = typename iterator_traits<_Outer_iter>::iterator_category;
using _InnerCat = typename iterator_traits<_Inner_iter>::iterator_category;
if constexpr (derived_from<_OuterCat, bidirectional_iterator_tag>
- && derived_from<_InnerCat, bidirectional_iterator_tag>)
+ && derived_from<_InnerCat, bidirectional_iterator_tag>
+ && common_range<range_reference_t<_Base<_Const>>>)
return bidirectional_iterator_tag{};
else if constexpr (derived_from<_OuterCat, forward_iterator_tag>
&& derived_from<_InnerCat, forward_iterator_tag>)
@@ -2575,7 +2576,8 @@ namespace views::__adaptor
{
if constexpr (_S_ref_is_glvalue
&& bidirectional_range<_Base>
- && bidirectional_range<range_reference_t<_Base>>)
+ && bidirectional_range<range_reference_t<_Base>>
+ && common_range<range_reference_t<_Base>>)
return bidirectional_iterator_tag{};
else if constexpr (_S_ref_is_glvalue
&& forward_range<_Base>