[PATCH 2/3] libstdc++: Stop using _Self typedefs in std::list iterators
Jonathan Wakely
jwakely@redhat.com
Tue Dec 3 21:36:22 GMT 2024
Pushed
On Fri, 15 Nov 2024 at 15:28, Jonathan Wakely <jwakely@redhat.com> wrote:
>
> We can just use the injected-class-name instead of defining a new name.
> That seems simpler.
>
> libstdc++-v3/ChangeLog:
>
> * include/bits/stl_list.h (_List_iterator): Remove _Self typedef
> and just use injected-class-name instead.
> (_List_const_iterator): Likewise.
> ---
>
> Tested x86_64-linux.
>
> Pull request at https://forge.sourceware.org/gcc/gcc-TEST/pulls/25
>
> libstdc++-v3/include/bits/stl_list.h | 40 +++++++++++++++-------------
> 1 file changed, 21 insertions(+), 19 deletions(-)
>
> diff --git a/libstdc++-v3/include/bits/stl_list.h b/libstdc++-v3/include/bits/stl_list.h
> index d51fde90e2b..b1ab335ba4c 100644
> --- a/libstdc++-v3/include/bits/stl_list.h
> +++ b/libstdc++-v3/include/bits/stl_list.h
> @@ -254,7 +254,6 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
> template<typename _Tp>
> struct _List_iterator
> {
> - typedef _List_iterator<_Tp> _Self;
> typedef _List_node<_Tp> _Node;
>
> typedef ptrdiff_t difference_type;
> @@ -270,7 +269,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
> _List_iterator(__detail::_List_node_base* __x) _GLIBCXX_NOEXCEPT
> : _M_node(__x) { }
>
> - _Self
> + _List_iterator
> _M_const_cast() const _GLIBCXX_NOEXCEPT
> { return *this; }
>
> @@ -285,45 +284,47 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
> operator->() const _GLIBCXX_NOEXCEPT
> { return static_cast<_Node*>(_M_node)->_M_valptr(); }
>
> - _Self&
> + _List_iterator&
> operator++() _GLIBCXX_NOEXCEPT
> {
> _M_node = _M_node->_M_next;
> return *this;
> }
>
> - _Self
> + _List_iterator
> operator++(int) _GLIBCXX_NOEXCEPT
> {
> - _Self __tmp = *this;
> + _List_iterator __tmp = *this;
> _M_node = _M_node->_M_next;
> return __tmp;
> }
>
> - _Self&
> + _List_iterator&
> operator--() _GLIBCXX_NOEXCEPT
> {
> _M_node = _M_node->_M_prev;
> return *this;
> }
>
> - _Self
> + _List_iterator
> operator--(int) _GLIBCXX_NOEXCEPT
> {
> - _Self __tmp = *this;
> + _List_iterator __tmp = *this;
> _M_node = _M_node->_M_prev;
> return __tmp;
> }
>
> _GLIBCXX_NODISCARD
> friend bool
> - operator==(const _Self& __x, const _Self& __y) _GLIBCXX_NOEXCEPT
> + operator==(const _List_iterator& __x,
> + const _List_iterator& __y) _GLIBCXX_NOEXCEPT
> { return __x._M_node == __y._M_node; }
>
> #if __cpp_impl_three_way_comparison < 201907L
> _GLIBCXX_NODISCARD
> friend bool
> - operator!=(const _Self& __x, const _Self& __y) _GLIBCXX_NOEXCEPT
> + operator!=(const _List_iterator& __x,
> + const _List_iterator& __y) _GLIBCXX_NOEXCEPT
> { return __x._M_node != __y._M_node; }
> #endif
>
> @@ -339,7 +340,6 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
> template<typename _Tp>
> struct _List_const_iterator
> {
> - typedef _List_const_iterator<_Tp> _Self;
> typedef const _List_node<_Tp> _Node;
> typedef _List_iterator<_Tp> iterator;
>
> @@ -375,45 +375,47 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
> operator->() const _GLIBCXX_NOEXCEPT
> { return static_cast<_Node*>(_M_node)->_M_valptr(); }
>
> - _Self&
> + _List_const_iterator&
> operator++() _GLIBCXX_NOEXCEPT
> {
> _M_node = _M_node->_M_next;
> return *this;
> }
>
> - _Self
> + _List_const_iterator
> operator++(int) _GLIBCXX_NOEXCEPT
> {
> - _Self __tmp = *this;
> + _List_const_iterator __tmp = *this;
> _M_node = _M_node->_M_next;
> return __tmp;
> }
>
> - _Self&
> + _List_const_iterator&
> operator--() _GLIBCXX_NOEXCEPT
> {
> _M_node = _M_node->_M_prev;
> return *this;
> }
>
> - _Self
> + _List_const_iterator
> operator--(int) _GLIBCXX_NOEXCEPT
> {
> - _Self __tmp = *this;
> + _List_const_iterator __tmp = *this;
> _M_node = _M_node->_M_prev;
> return __tmp;
> }
>
> _GLIBCXX_NODISCARD
> friend bool
> - operator==(const _Self& __x, const _Self& __y) _GLIBCXX_NOEXCEPT
> + operator==(const _List_const_iterator& __x,
> + const _List_const_iterator& __y) _GLIBCXX_NOEXCEPT
> { return __x._M_node == __y._M_node; }
>
> #if __cpp_impl_three_way_comparison < 201907L
> _GLIBCXX_NODISCARD
> friend bool
> - operator!=(const _Self& __x, const _Self& __y) _GLIBCXX_NOEXCEPT
> + operator!=(const _List_const_iterator& __x,
> + const _List_const_iterator& __y) _GLIBCXX_NOEXCEPT
> { return __x._M_node != __y._M_node; }
> #endif
>
> --
> 2.47.0
>
More information about the Libstdc++
mailing list