From 49bc1cf6c63d062e9011e902d5e9a61de1dcc25a Mon Sep 17 00:00:00 2001 From: Patrick Palka Date: Wed, 19 Feb 2025 23:05:40 -0500 Subject: [PATCH] libstdc++: Rename concat_view::iterator to ::_Iterator Even though 'iterator' is a reserved macro name, we can't use it as the name of this implementation detail type since it could introduce name lookup ambiguity in valid code, e.g. struct A { using iterator = void; } struct B : concat_view<...>, A { using type = iterator; }; libstdc++-v3/ChangeLog: * include/std/ranges (concat_view::iterator): Rename to ... (concat_view::_Iterator): ... this throughout. Reviewed-by: Jonathan Wakely --- libstdc++-v3/include/std/ranges | 78 ++++++++++++++++----------------- 1 file changed, 39 insertions(+), 39 deletions(-) diff --git a/libstdc++-v3/include/std/ranges b/libstdc++-v3/include/std/ranges index 22e0c9cae44..6c65722b687 100644 --- a/libstdc++-v3/include/std/ranges +++ b/libstdc++-v3/include/std/ranges @@ -9693,7 +9693,7 @@ namespace ranges { tuple<_Vs...> _M_views; - template class iterator; + template class _Iterator; public: constexpr concat_view() = default; @@ -9703,18 +9703,18 @@ namespace ranges : _M_views(std::move(__views)...) { } - constexpr iterator + constexpr _Iterator begin() requires (!(__detail::__simple_view<_Vs> && ...)) { - iterator __it(this, in_place_index<0>, ranges::begin(std::get<0>(_M_views))); + _Iterator __it(this, in_place_index<0>, ranges::begin(std::get<0>(_M_views))); __it.template _M_satisfy<0>(); return __it; } - constexpr iterator + constexpr _Iterator begin() const requires (range && ...) && __detail::__concatable { - iterator __it(this, in_place_index<0>, ranges::begin(std::get<0>(_M_views))); + _Iterator __it(this, in_place_index<0>, ranges::begin(std::get<0>(_M_views))); __it.template _M_satisfy<0>(); return __it; } @@ -9725,8 +9725,8 @@ namespace ranges constexpr auto __n = sizeof...(_Vs); if constexpr ((semiregular> && ...) && common_range<_Vs...[__n - 1]>) - return iterator(this, in_place_index<__n - 1>, - ranges::end(std::get<__n - 1>(_M_views))); + return _Iterator(this, in_place_index<__n - 1>, + ranges::end(std::get<__n - 1>(_M_views))); else return default_sentinel; } @@ -9737,8 +9737,8 @@ namespace ranges constexpr auto __n = sizeof...(_Vs); if constexpr ((semiregular> && ...) && common_range) - return iterator(this, in_place_index<__n - 1>, - ranges::end(std::get<__n - 1>(_M_views))); + return _Iterator(this, in_place_index<__n - 1>, + ranges::end(std::get<__n - 1>(_M_views))); else return default_sentinel; } @@ -9801,7 +9801,7 @@ namespace ranges template requires (view<_Vs> && ...) && (sizeof...(_Vs) > 0) && __detail::__concatable<_Vs...> template - class concat_view<_Vs...>::iterator + class concat_view<_Vs...>::_Iterator : public __detail::__concat_view_iter_cat<_Const, _Vs...> { static auto @@ -9818,7 +9818,7 @@ namespace ranges } friend concat_view; - friend iterator; + friend _Iterator; public: // iterator_category defined in __concat_view_iter_cat @@ -9929,16 +9929,16 @@ namespace ranges template explicit constexpr - iterator(__maybe_const_t<_Const, concat_view>* __parent, _Args&&... __args) + _Iterator(__maybe_const_t<_Const, concat_view>* __parent, _Args&&... __args) requires constructible_from<__base_iter, _Args&&...> : _M_parent(__parent), _M_it(std::forward<_Args>(__args)...) { } public: - iterator() = default; + _Iterator() = default; constexpr - iterator(iterator __it) + _Iterator(_Iterator __it) requires _Const && (convertible_to, iterator_t> && ...) : _M_parent(__it._M_parent) { @@ -9955,7 +9955,7 @@ namespace ranges return std::visit([](auto&& __it) -> reference { return *__it; }, _M_it); } - constexpr iterator& + constexpr _Iterator& operator++() { _M_invoke_with_runtime_index([this]() { @@ -9969,7 +9969,7 @@ namespace ranges operator++(int) { ++*this; } - constexpr iterator + constexpr _Iterator operator++(int) requires __detail::__all_forward<_Const, _Vs...> { @@ -9978,7 +9978,7 @@ namespace ranges return __tmp; } - constexpr iterator& + constexpr _Iterator& operator--() requires __detail::__concat_is_bidirectional<_Const, _Vs...> { @@ -9989,7 +9989,7 @@ namespace ranges return *this; } - constexpr iterator + constexpr _Iterator operator--(int) requires __detail::__concat_is_bidirectional<_Const, _Vs...> { @@ -9998,7 +9998,7 @@ namespace ranges return __tmp; } - constexpr iterator& + constexpr _Iterator& operator+=(difference_type __n) requires __detail::__concat_is_random_access<_Const, _Vs...> { @@ -10013,7 +10013,7 @@ namespace ranges return *this; } - constexpr iterator& + constexpr _Iterator& operator-=(difference_type __n) requires __detail::__concat_is_random_access<_Const, _Vs...> { @@ -10027,7 +10027,7 @@ namespace ranges { return *((*this) + __n); } friend constexpr bool - operator==(const iterator& __x, const iterator& __y) + operator==(const _Iterator& __x, const _Iterator& __y) requires (equality_comparable>> && ...) { __glibcxx_assert(!__x._M_it.valueless_by_exception()); @@ -10036,7 +10036,7 @@ namespace ranges } friend constexpr bool - operator==(const iterator& __it, default_sentinel_t) + operator==(const _Iterator& __it, default_sentinel_t) { __glibcxx_assert(!__it._M_it.valueless_by_exception()); constexpr auto __last_idx = sizeof...(_Vs) - 1; @@ -10046,48 +10046,48 @@ namespace ranges } friend constexpr bool - operator<(const iterator& __x, const iterator& __y) + operator<(const _Iterator& __x, const _Iterator& __y) requires __detail::__all_random_access<_Const, _Vs...> { return __x._M_it < __y._M_it; } friend constexpr bool - operator>(const iterator& __x, const iterator& __y) + operator>(const _Iterator& __x, const _Iterator& __y) requires __detail::__all_random_access<_Const, _Vs...> { return __x._M_it > __y._M_it; } friend constexpr bool - operator<=(const iterator& __x, const iterator& __y) + operator<=(const _Iterator& __x, const _Iterator& __y) requires __detail::__all_random_access<_Const, _Vs...> { return __x._M_it <= __y._M_it; } friend constexpr bool - operator>=(const iterator& __x, const iterator& __y) + operator>=(const _Iterator& __x, const _Iterator& __y) requires __detail::__all_random_access<_Const, _Vs...> { return __x._M_it >= __y._M_it; } friend constexpr auto - operator<=>(const iterator& __x, const iterator& __y) + operator<=>(const _Iterator& __x, const _Iterator& __y) requires __detail::__all_random_access<_Const, _Vs...> && (three_way_comparable>> && ...) { return __x._M_it <=> __y._M_it; } - friend constexpr iterator - operator+(const iterator& __it, difference_type __n) + friend constexpr _Iterator + operator+(const _Iterator& __it, difference_type __n) requires __detail::__concat_is_random_access<_Const, _Vs...> { return auto(__it) += __n; } - friend constexpr iterator - operator+(difference_type __n, const iterator& __it) + friend constexpr _Iterator + operator+(difference_type __n, const _Iterator& __it) requires __detail::__concat_is_random_access<_Const, _Vs...> { return __it + __n; } - friend constexpr iterator - operator-(const iterator& __it, difference_type __n) + friend constexpr _Iterator + operator-(const _Iterator& __it, difference_type __n) requires __detail::__concat_is_random_access<_Const, _Vs...> { return auto(__it) -= __n; } friend constexpr difference_type - operator-(const iterator& __x, const iterator& __y) + operator-(const _Iterator& __x, const _Iterator& __y) requires __detail::__concat_is_random_access<_Const, _Vs...> { return _S_invoke_with_runtime_index([&]() -> difference_type { @@ -10119,7 +10119,7 @@ namespace ranges } friend constexpr difference_type - operator-(const iterator& __x, default_sentinel_t) + operator-(const _Iterator& __x, default_sentinel_t) requires (sized_sentinel_for>, iterator_t<__maybe_const_t<_Const, _Vs>>> && ...) && __detail::__all_but_first_sized<__maybe_const_t<_Const, _Vs>...>::value @@ -10140,14 +10140,14 @@ namespace ranges } friend constexpr difference_type - operator-(default_sentinel_t, const iterator& __x) + operator-(default_sentinel_t, const _Iterator& __x) requires (sized_sentinel_for>, iterator_t<__maybe_const_t<_Const, _Vs>>> && ...) && __detail::__all_but_first_sized<__maybe_const_t<_Const, _Vs>...>::value { return -(__x - default_sentinel); } friend constexpr decltype(auto) - iter_move(const iterator& __it) + iter_move(const _Iterator& __it) { using _Res = __detail::__concat_rvalue_reference_t<__maybe_const_t<_Const, _Vs>...>; return std::visit([](const auto& __i) -> _Res { @@ -10156,8 +10156,8 @@ namespace ranges } friend constexpr void - iter_swap(const iterator& __x, const iterator& __y) - requires swappable_with, iter_reference_t> + iter_swap(const _Iterator& __x, const _Iterator& __y) + requires swappable_with, iter_reference_t<_Iterator>> && (... && indirectly_swappable>>) { std::visit([&](const _Tp& __it1, const _Up& __it2) {