diff --git a/libstdc++-v3/include/bits/stl_bvector.h b/libstdc++-v3/include/bits/stl_bvector.h index c60f4f0ef1c..6b9fb2b42b3 100644 --- a/libstdc++-v3/include/bits/stl_bvector.h +++ b/libstdc++-v3/include/bits/stl_bvector.h @@ -182,40 +182,40 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER _M_offset = static_cast(__n); } - bool - operator==(const _Bit_iterator_base& __i) const - { return _M_p == __i._M_p && _M_offset == __i._M_offset; } + friend bool + operator==(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) + { return __x._M_p == __y._M_p && __x._M_offset == __y._M_offset; } - bool - operator<(const _Bit_iterator_base& __i) const + friend bool + operator<(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) { - return _M_p < __i._M_p - || (_M_p == __i._M_p && _M_offset < __i._M_offset); + return __x._M_p < __y._M_p + || (__x._M_p == __y._M_p && __x._M_offset < __y._M_offset); } - bool - operator!=(const _Bit_iterator_base& __i) const - { return !(*this == __i); } + friend bool + operator!=(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) + { return !(__x == __y); } - bool - operator>(const _Bit_iterator_base& __i) const - { return __i < *this; } + friend bool + operator>(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) + { return __y < __x; } - bool - operator<=(const _Bit_iterator_base& __i) const - { return !(__i < *this); } + friend bool + operator<=(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) + { return !(__y < __x); } - bool - operator>=(const _Bit_iterator_base& __i) const - { return !(*this < __i); } - }; + friend bool + operator>=(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) + { return !(__x < __y); } - inline ptrdiff_t - operator-(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) - { - return (int(_S_word_bit) * (__x._M_p - __y._M_p) - + __x._M_offset - __y._M_offset); - } + friend ptrdiff_t + operator-(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) + { + return (int(_S_word_bit) * (__x._M_p - __y._M_p) + + __x._M_offset - __y._M_offset); + } + }; struct _Bit_iterator : public _Bit_iterator_base { @@ -280,29 +280,31 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER return *this; } - iterator - operator+(difference_type __i) const + reference + operator[](difference_type __i) const + { return *(*this + __i); } + + friend iterator + operator+(const iterator& __x, difference_type __n) { - iterator __tmp = *this; - return __tmp += __i; + iterator __tmp = __x; + __tmp += __n; + return __tmp; } - iterator - operator-(difference_type __i) const + friend iterator + operator+(difference_type __n, const iterator& __x) + { return __x + __n; } + + friend iterator + operator-(const iterator& __x, difference_type __n) { - iterator __tmp = *this; - return __tmp -= __i; + iterator __tmp = __x; + __tmp -= __n; + return __tmp; } - - reference - operator[](difference_type __i) const - { return *(*this + __i); } }; - inline _Bit_iterator - operator+(ptrdiff_t __n, const _Bit_iterator& __x) - { return __x + __n; } - struct _Bit_const_iterator : public _Bit_iterator_base { typedef bool reference; @@ -370,29 +372,29 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER return *this; } - const_iterator - operator+(difference_type __i) const + const_reference + operator[](difference_type __i) const + { return *(*this + __i); } + + friend const_iterator + operator+(const const_iterator& __x, difference_type __n) { - const_iterator __tmp = *this; - return __tmp += __i; + const_iterator __tmp = __x; + return __tmp += __n; } - const_iterator - operator-(difference_type __i) const + friend const_iterator + operator-(const const_iterator& __x, difference_type __n) { - const_iterator __tmp = *this; - return __tmp -= __i; + const_iterator __tmp = __x; + return __tmp -= __n; } - const_reference - operator[](difference_type __i) const - { return *(*this + __i); } + friend const_iterator + operator+(difference_type __n, const const_iterator& __x) + { return __x + __n; } }; - inline _Bit_const_iterator - operator+(ptrdiff_t __n, const _Bit_const_iterator& __x) - { return __x + __n; } - inline void __fill_bvector(_Bit_type * __v, unsigned int __first, unsigned int __last, bool __x)