mirror of
https://github.com/boostorg/container.git
synced 2025-08-02 14:04:26 +02:00
Fix GitHub #83: ("Iterator zero incrementing leads to assert on empty vector")
This commit is contained in:
@@ -1253,6 +1253,7 @@ use [*Boost.Container]? There are several reasons for that:
|
|||||||
|
|
||||||
* Fixed bugs:
|
* Fixed bugs:
|
||||||
* [@https://github.com/boostorg/container/issues/82 GitHub #82: ['"Function definition in header file"]].
|
* [@https://github.com/boostorg/container/issues/82 GitHub #82: ['"Function definition in header file"]].
|
||||||
|
* [@https://github.com/boostorg/container/issues/83 GitHub #83: ['"Iterator zero incrementing leads to assert on empty vector"]].
|
||||||
* [@https://github.com/boostorg/container/pull/86 GitHub #86: ['"Add missing warning re-enabling include"]].
|
* [@https://github.com/boostorg/container/pull/86 GitHub #86: ['"Add missing warning re-enabling include"]].
|
||||||
|
|
||||||
[endsect]
|
[endsect]
|
||||||
|
@@ -145,19 +145,19 @@ class vec_iterator
|
|||||||
|
|
||||||
//Arithmetic
|
//Arithmetic
|
||||||
BOOST_CONTAINER_FORCEINLINE vec_iterator& operator+=(difference_type off) BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE vec_iterator& operator+=(difference_type off) BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ BOOST_ASSERT(!!m_ptr); m_ptr += off; return *this; }
|
{ BOOST_ASSERT(m_ptr || !off); m_ptr += off; return *this; }
|
||||||
|
|
||||||
BOOST_CONTAINER_FORCEINLINE vec_iterator& operator-=(difference_type off) BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE vec_iterator& operator-=(difference_type off) BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ BOOST_ASSERT(!!m_ptr); m_ptr -= off; return *this; }
|
{ BOOST_ASSERT(m_ptr || !off); m_ptr -= off; return *this; }
|
||||||
|
|
||||||
BOOST_CONTAINER_FORCEINLINE friend vec_iterator operator+(const vec_iterator &x, difference_type off) BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE friend vec_iterator operator+(const vec_iterator &x, difference_type off) BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ BOOST_ASSERT(!!x.m_ptr); return vec_iterator(x.m_ptr+off); }
|
{ BOOST_ASSERT(x.m_ptr || !off); return vec_iterator(x.m_ptr+off); }
|
||||||
|
|
||||||
BOOST_CONTAINER_FORCEINLINE friend vec_iterator operator+(difference_type off, vec_iterator right) BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE friend vec_iterator operator+(difference_type off, vec_iterator right) BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ BOOST_ASSERT(!!right.m_ptr); right.m_ptr += off; return right; }
|
{ BOOST_ASSERT(right.m_ptr || !off); right.m_ptr += off; return right; }
|
||||||
|
|
||||||
BOOST_CONTAINER_FORCEINLINE friend vec_iterator operator-(vec_iterator left, difference_type off) BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE friend vec_iterator operator-(vec_iterator left, difference_type off) BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ BOOST_ASSERT(!!left.m_ptr); left.m_ptr -= off; return left; }
|
{ BOOST_ASSERT(left.m_ptr || !off); left.m_ptr -= off; return left; }
|
||||||
|
|
||||||
BOOST_CONTAINER_FORCEINLINE friend difference_type operator-(const vec_iterator &left, const vec_iterator& right) BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE friend difference_type operator-(const vec_iterator &left, const vec_iterator& right) BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ return left.m_ptr - right.m_ptr; }
|
{ return left.m_ptr - right.m_ptr; }
|
||||||
|
Reference in New Issue
Block a user