aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3
diff options
context:
space:
mode:
authorFrançois Dumont <fdumont@gcc.gnu.org>2019-05-11 13:29:05 +0000
committerFrançois Dumont <fdumont@gcc.gnu.org>2019-05-11 13:29:05 +0000
commite9c54233f7a9b4827702d64034d51db52787a659 (patch)
tree6f3eeae245eed6872c8f6fe0e7c6ed0325881b38 /libstdc++-v3
parentb5b9147d35ee509714c34d813c7723bf18bb7b7a (diff)
downloadgcc-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/ChangeLog26
-rw-r--r--libstdc++-v3/include/bits/stl_bvector.h118
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)