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. From-SVN: r265060
This commit is contained in:
parent
2c4f9ec162
commit
91febb0e2b
|
@ -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>
|
2018-10-11 Jonathan Wakely <jwakely@redhat.com>
|
||||||
|
|
||||||
PR libstdc++/80538
|
PR libstdc++/80538
|
||||||
|
|
|
@ -173,13 +173,20 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
|
||||||
return __tmp;
|
return __tmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
/**
|
||||||
operator==(const _Self& __x) const noexcept
|
* @brief Forward list iterator equality comparison.
|
||||||
{ return _M_node == __x._M_node; }
|
*/
|
||||||
|
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
|
_Self
|
||||||
_M_next() const noexcept
|
_M_next() const noexcept
|
||||||
|
@ -244,13 +251,19 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
|
||||||
return __tmp;
|
return __tmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
/**
|
||||||
operator==(const _Self& __x) const noexcept
|
* @brief Forward list const_iterator equality comparison.
|
||||||
{ return _M_node == __x._M_node; }
|
*/
|
||||||
|
friend bool
|
||||||
|
operator==(const _Self& __x, const _Self& __y) noexcept
|
||||||
|
{ return __x._M_node == __y._M_node; }
|
||||||
|
|
||||||
bool
|
/**
|
||||||
operator!=(const _Self& __x) const noexcept
|
* @brief Forward list const_iterator inequality comparison.
|
||||||
{ return _M_node != __x._M_node; }
|
*/
|
||||||
|
friend bool
|
||||||
|
operator!=(const _Self& __x, const _Self& __y) noexcept
|
||||||
|
{ return __x._M_node != __y._M_node; }
|
||||||
|
|
||||||
_Self
|
_Self
|
||||||
_M_next() const noexcept
|
_M_next() const noexcept
|
||||||
|
@ -264,24 +277,6 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
|
||||||
const _Fwd_list_node_base* _M_node;
|
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.
|
* @brief Base class for %forward_list.
|
||||||
*/
|
*/
|
||||||
|
@ -433,8 +428,8 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
|
||||||
|
|
||||||
private:
|
private:
|
||||||
typedef _Fwd_list_base<_Tp, _Alloc> _Base;
|
typedef _Fwd_list_base<_Tp, _Alloc> _Base;
|
||||||
typedef _Fwd_list_node<_Tp> _Node;
|
|
||||||
typedef _Fwd_list_node_base _Node_base;
|
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_type _Node_alloc_type;
|
||||||
typedef typename _Base::_Node_alloc_traits _Node_alloc_traits;
|
typedef typename _Base::_Node_alloc_traits _Node_alloc_traits;
|
||||||
typedef allocator_traits<__alloc_rebind<_Alloc, _Tp>> _Alloc_traits;
|
typedef allocator_traits<__alloc_rebind<_Alloc, _Tp>> _Alloc_traits;
|
||||||
|
@ -447,8 +442,8 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
|
||||||
typedef value_type& reference;
|
typedef value_type& reference;
|
||||||
typedef const value_type& const_reference;
|
typedef const value_type& const_reference;
|
||||||
|
|
||||||
typedef _Fwd_list_iterator<_Tp> iterator;
|
typedef typename _Base::iterator iterator;
|
||||||
typedef _Fwd_list_const_iterator<_Tp> const_iterator;
|
typedef typename _Base::const_iterator const_iterator;
|
||||||
typedef std::size_t size_type;
|
typedef std::size_t size_type;
|
||||||
typedef std::ptrdiff_t difference_type;
|
typedef std::ptrdiff_t difference_type;
|
||||||
typedef _Alloc allocator_type;
|
typedef _Alloc allocator_type;
|
||||||
|
|
Loading…
Reference in New Issue