mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-08 19:20:44 +08:00
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
This commit is contained in:
parent
b5b9147d35
commit
e9c54233f7
@ -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
|
||||
|
@ -182,41 +182,41 @@ _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); }
|
||||
|
||||
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);
|
||||
}
|
||||
};
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
struct _Bit_iterator : public _Bit_iterator_base
|
||||
{
|
||||
typedef _Bit_reference reference;
|
||||
@ -280,28 +280,30 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
|
||||
return *this;
|
||||
}
|
||||
|
||||
iterator
|
||||
operator+(difference_type __i) const
|
||||
{
|
||||
iterator __tmp = *this;
|
||||
return __tmp += __i;
|
||||
}
|
||||
|
||||
iterator
|
||||
operator-(difference_type __i) const
|
||||
{
|
||||
iterator __tmp = *this;
|
||||
return __tmp -= __i;
|
||||
}
|
||||
|
||||
reference
|
||||
operator[](difference_type __i) const
|
||||
{ return *(*this + __i); }
|
||||
};
|
||||
|
||||
inline _Bit_iterator
|
||||
operator+(ptrdiff_t __n, const _Bit_iterator& __x)
|
||||
{ return __x + __n; }
|
||||
friend iterator
|
||||
operator+(const iterator& __x, difference_type __n)
|
||||
{
|
||||
iterator __tmp = __x;
|
||||
__tmp += __n;
|
||||
return __tmp;
|
||||
}
|
||||
|
||||
friend iterator
|
||||
operator+(difference_type __n, const iterator& __x)
|
||||
{ return __x + __n; }
|
||||
|
||||
friend iterator
|
||||
operator-(const iterator& __x, difference_type __n)
|
||||
{
|
||||
iterator __tmp = __x;
|
||||
__tmp -= __n;
|
||||
return __tmp;
|
||||
}
|
||||
};
|
||||
|
||||
struct _Bit_const_iterator : public _Bit_iterator_base
|
||||
{
|
||||
@ -370,28 +372,30 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
|
||||
return *this;
|
||||
}
|
||||
|
||||
const_iterator
|
||||
operator+(difference_type __i) const
|
||||
{
|
||||
const_iterator __tmp = *this;
|
||||
return __tmp += __i;
|
||||
}
|
||||
|
||||
const_iterator
|
||||
operator-(difference_type __i) const
|
||||
{
|
||||
const_iterator __tmp = *this;
|
||||
return __tmp -= __i;
|
||||
}
|
||||
|
||||
const_reference
|
||||
operator[](difference_type __i) const
|
||||
{ return *(*this + __i); }
|
||||
};
|
||||
|
||||
inline _Bit_const_iterator
|
||||
operator+(ptrdiff_t __n, const _Bit_const_iterator& __x)
|
||||
{ return __x + __n; }
|
||||
friend const_iterator
|
||||
operator+(const const_iterator& __x, difference_type __n)
|
||||
{
|
||||
const_iterator __tmp = __x;
|
||||
__tmp += __n;
|
||||
return __tmp;
|
||||
}
|
||||
|
||||
friend const_iterator
|
||||
operator-(const const_iterator& __x, difference_type __n)
|
||||
{
|
||||
const_iterator __tmp = __x;
|
||||
__tmp -= __n;
|
||||
return __tmp;
|
||||
}
|
||||
|
||||
friend const_iterator
|
||||
operator+(difference_type __n, const const_iterator& __x)
|
||||
{ return __x + __n; }
|
||||
};
|
||||
|
||||
inline void
|
||||
__fill_bvector(_Bit_type * __v,
|
||||
|
Loading…
x
Reference in New Issue
Block a user