diff options
author | François Dumont <fdumont@gcc.gnu.org> | 2019-05-11 13:29:05 +0000 |
---|---|---|
committer | François Dumont <fdumont@gcc.gnu.org> | 2019-05-11 13:29:05 +0000 |
commit | e9c54233f7a9b4827702d64034d51db52787a659 (patch) | |
tree | 6f3eeae245eed6872c8f6fe0e7c6ed0325881b38 /libstdc++-v3 | |
parent | b5b9147d35ee509714c34d813c7723bf18bb7b7a (diff) | |
download | gcc-e9c54233f7a9b4827702d64034d51db52787a659.zip gcc-e9c54233f7a9b4827702d64034d51db52787a659.tar.gz gcc-e9c54233f7a9b4827702d64034d51db52787a659.tar.bz2 |
stl_bvector.h (operator==(const _Bit_iterator_base&, const _Bit_iterator_base&)): Make hidden friend.
2019-05-11 François Dumont <fdumont@gcc.gnu.org>
* include/bits/stl_bvector.h
(operator==(const _Bit_iterator_base&, const _Bit_iterator_base&)):
Make hidden friend.
(operator<(const _Bit_iterator_base&, const _Bit_iterator_base&)):
Likewise.
(operator!=(const _Bit_iterator_base&, const _Bit_iterator_base&)):
Likewise.
(operator>(const _Bit_iterator_base&, const _Bit_iterator_base&)):
Likewise.
(operator<=(const _Bit_iterator_base&, const _Bit_iterator_base&)):
Likewise.
(operator>=(const _Bit_iterator_base&, const _Bit_iterator_base&)):
Likewise.
(operator-(const _Bit_iterator_base&, const _Bit_iterator_base&)):
Likewise.
(_Bit_iterator::operator+(difference_type)): Likewise and allow NRVO
copy elision.
(_Bit_iterator::operator-(difference_type)): Likewise.
(operator+(ptrdiff_t, const _Bit_iterator&)): Make hidden friend.
(_Bit_const_iterator::operator+(difference_type)): Likewise and allow
NRVO copy elision.
(_Bit_const_iterator::operator-(difference_type)): Likewise.
(operator+(ptrdiff_t, const _Bit_const_iterator&)): Make hidden friend.
From-SVN: r271096
Diffstat (limited to 'libstdc++-v3')
-rw-r--r-- | libstdc++-v3/ChangeLog | 26 | ||||
-rw-r--r-- | libstdc++-v3/include/bits/stl_bvector.h | 118 |
2 files changed, 87 insertions, 57 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index ee7bcdc..50633c8 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,29 @@ +2019-05-11 François Dumont <fdumont@gcc.gnu.org> + + * include/bits/stl_bvector.h + (operator==(const _Bit_iterator_base&, const _Bit_iterator_base&)): + Make hidden friend. + (operator<(const _Bit_iterator_base&, const _Bit_iterator_base&)): + Likewise. + (operator!=(const _Bit_iterator_base&, const _Bit_iterator_base&)): + Likewise. + (operator>(const _Bit_iterator_base&, const _Bit_iterator_base&)): + Likewise. + (operator<=(const _Bit_iterator_base&, const _Bit_iterator_base&)): + Likewise. + (operator>=(const _Bit_iterator_base&, const _Bit_iterator_base&)): + Likewise. + (operator-(const _Bit_iterator_base&, const _Bit_iterator_base&)): + Likewise. + (_Bit_iterator::operator+(difference_type)): Likewise and allow NRVO + copy elision. + (_Bit_iterator::operator-(difference_type)): Likewise. + (operator+(ptrdiff_t, const _Bit_iterator&)): Make hidden friend. + (_Bit_const_iterator::operator+(difference_type)): Likewise and allow + NRVO copy elision. + (_Bit_const_iterator::operator-(difference_type)): Likewise. + (operator+(ptrdiff_t, const _Bit_const_iterator&)): Make hidden friend. + 2019-05-10 Jonathan Wakely <jwakely@redhat.com> PR libstdc++/81266 diff --git a/libstdc++-v3/include/bits/stl_bvector.h b/libstdc++-v3/include/bits/stl_bvector.h index c60f4f0..280d40f 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<unsigned int>(__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,31 @@ _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; + __tmp += __n; + return __tmp; } - 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; + __tmp -= __n; + return __tmp; } - 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) |