[gcc r11-9819] libstdc++: Implement LWG 3535 changes to ranges::join_view
Patrick Palka
ppalka@gcc.gnu.org
Tue Apr 12 14:28:48 GMT 2022
https://gcc.gnu.org/g:b0561bc86b3d70f823b506c6baa738303869dda1
commit r11-9819-gb0561bc86b3d70f823b506c6baa738303869dda1
Author: Patrick Palka <ppalka@redhat.com>
Date: Wed Oct 20 21:34:21 2021 -0400
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.
(cherry picked from commit 6667274b0593a64dd3de3c7c3565bec42af35b62)
Diff:
---
libstdc++-v3/include/std/ranges | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/libstdc++-v3/include/std/ranges b/libstdc++-v3/include/std/ranges
index 99404acda3d..52ca9080759 100644
--- a/libstdc++-v3/include/std/ranges
+++ b/libstdc++-v3/include/std/ranges
@@ -2471,7 +2471,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>)
@@ -2523,7 +2524,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>
More information about the Gcc-cvs
mailing list