2018-10-11 François Dumont <fdumont@gcc.gnu.org>
authorFrançois Dumont <fdumont@gcc.gnu.org>
Thu, 11 Oct 2018 20:21:57 +0000 (20:21 +0000)
committerFrançois Dumont <fdumont@gcc.gnu.org>
Thu, 11 Oct 2018 20:21:57 +0000 (20:21 +0000)
* include/bits/forward_list.h
(_Fwd_list_iterator<>::operator==): Replace member function with inline
friend.
(_Fwd_list_iterator<>::operator!=): Likewise.
(_Fwd_list_const_iterator<>::operator==): Likewise.
(_Fwd_list_const_iterator<>::operator!=): Likewise.
(operator==(const _Fwd_list_iterator<>&,
const _Fwd_list_const_iterator<>&)): Remove.
(operator!=(const _Fwd_list_iterator<>&,
const _Fwd_list_const_iterator<>&)): Remove.
(forward_list<>::_Node): Take typedef from base type.
(forward_list<>::iterator): Likewise.
(forward_list<>::const_iterator): Likewise.

From-SVN: r265060

libstdc++-v3/ChangeLog
libstdc++-v3/include/bits/forward_list.h

index b92fdf14cacc59dd31f6532079ccca8c009583ee..74a781e53c83ad6ad4a88f9c0f8bb141a7ef5261 100644 (file)
@@ -1,3 +1,19 @@
+2018-10-11  François Dumont  <fdumont@gcc.gnu.org>
+
+       * include/bits/forward_list.h
+       (_Fwd_list_iterator<>::operator==): Replace member function with inline
+       friend.
+       (_Fwd_list_iterator<>::operator!=): Likewise.
+       (_Fwd_list_const_iterator<>::operator==): Likewise.
+       (_Fwd_list_const_iterator<>::operator!=): Likewise.
+       (operator==(const _Fwd_list_iterator<>&,
+       const _Fwd_list_const_iterator<>&)): Remove.
+       (operator!=(const _Fwd_list_iterator<>&,
+       const _Fwd_list_const_iterator<>&)): Remove.
+       (forward_list<>::_Node): Take typedef from base type.
+       (forward_list<>::iterator): Likewise.
+       (forward_list<>::const_iterator): Likewise.
+
 2018-10-11  Jonathan Wakely  <jwakely@redhat.com>
 
        PR libstdc++/80538
index 84a4ad4d5dc8514200da160f1ac5b6dcbe71af92..ebec3b5c818de34ad735d54f29bb815007c70055 100644 (file)
@@ -173,13 +173,20 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
        return __tmp;
       }
 
-      bool
-      operator==(const _Self& __x) const noexcept
-      { return _M_node == __x._M_node; }
+      /**
+       *  @brief  Forward list iterator equality comparison.
+       */
+      friend bool
+      operator==(const _Self& __x, const _Self& __y) noexcept
+      { return __x._M_node == __y._M_node; }
 
-      bool
-      operator!=(const _Self& __x) const noexcept
-      { return _M_node != __x._M_node; }
+
+      /**
+       *  @brief  Forward list iterator inequality comparison.
+       */
+      friend bool
+      operator!=(const _Self& __x, const _Self& __y) noexcept
+      { return __x._M_node != __y._M_node; }
 
       _Self
       _M_next() const noexcept
@@ -244,13 +251,19 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
        return __tmp;
       }
 
-      bool
-      operator==(const _Self& __x) const noexcept
-      { return _M_node == __x._M_node; }
+      /**
+       *  @brief  Forward list const_iterator equality comparison.
+       */
+      friend bool
+      operator==(const _Self& __x, const _Self& __y) noexcept
+      { return __x._M_node == __y._M_node; }
 
-      bool
-      operator!=(const _Self& __x) const noexcept
-      { return _M_node != __x._M_node; }
+      /**
+       *  @brief  Forward list const_iterator inequality comparison.
+       */
+      friend bool
+      operator!=(const _Self& __x, const _Self& __y) noexcept
+      { return __x._M_node != __y._M_node; }
 
       _Self
       _M_next() const noexcept
@@ -264,24 +277,6 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
       const _Fwd_list_node_base* _M_node;
     };
 
-  /**
-   *  @brief  Forward list iterator equality comparison.
-   */
-  template<typename _Tp>
-    inline bool
-    operator==(const _Fwd_list_iterator<_Tp>& __x,
-              const _Fwd_list_const_iterator<_Tp>& __y) noexcept
-    { return __x._M_node == __y._M_node; }
-
-  /**
-   *  @brief  Forward list iterator inequality comparison.
-   */
-  template<typename _Tp>
-    inline bool
-    operator!=(const _Fwd_list_iterator<_Tp>& __x,
-              const _Fwd_list_const_iterator<_Tp>& __y) noexcept
-    { return __x._M_node != __y._M_node; }
-
   /**
    *  @brief  Base class for %forward_list.
    */
@@ -433,8 +428,8 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
 
     private:
       typedef _Fwd_list_base<_Tp, _Alloc>              _Base;
-      typedef _Fwd_list_node<_Tp>                      _Node;
       typedef _Fwd_list_node_base                      _Node_base;
+      typedef typename _Base::_Node                    _Node;
       typedef typename _Base::_Node_alloc_type         _Node_alloc_type;
       typedef typename _Base::_Node_alloc_traits       _Node_alloc_traits;
       typedef allocator_traits<__alloc_rebind<_Alloc, _Tp>>    _Alloc_traits;
@@ -447,8 +442,8 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
       typedef value_type&                              reference;
       typedef const value_type&                                const_reference;
 
-      typedef _Fwd_list_iterator<_Tp>                  iterator;
-      typedef _Fwd_list_const_iterator<_Tp>            const_iterator;
+      typedef typename _Base::iterator                 iterator;
+      typedef typename _Base::const_iterator           const_iterator;
       typedef std::size_t                              size_type;
       typedef std::ptrdiff_t                           difference_type;
       typedef _Alloc                                   allocator_type;