Pushed On Fri, 15 Nov 2024 at 15:28, Jonathan Wakely <jwak...@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 >