diff --git a/include/boost/container/vector.hpp b/include/boost/container/vector.hpp index 7481061..c3baebc 100644 --- a/include/boost/container/vector.hpp +++ b/include/boost/container/vector.hpp @@ -122,42 +122,42 @@ class vec_iterator //Pointer like operators BOOST_CONTAINER_FORCEINLINE reference operator*() const BOOST_NOEXCEPT_OR_NOTHROW - { return *m_ptr; } + { BOOST_ASSERT(!!m_ptr); return *m_ptr; } BOOST_CONTAINER_FORCEINLINE pointer operator->() const BOOST_NOEXCEPT_OR_NOTHROW - { return ::boost::intrusive::pointer_traits::pointer_to(this->operator*()); } + { return m_ptr; } BOOST_CONTAINER_FORCEINLINE reference operator[](difference_type off) const BOOST_NOEXCEPT_OR_NOTHROW - { return m_ptr[off]; } + { BOOST_ASSERT(!!m_ptr); return m_ptr[off]; } //Increment / Decrement BOOST_CONTAINER_FORCEINLINE vec_iterator& operator++() BOOST_NOEXCEPT_OR_NOTHROW - { ++m_ptr; return *this; } + { BOOST_ASSERT(!!m_ptr); ++m_ptr; return *this; } BOOST_CONTAINER_FORCEINLINE vec_iterator operator++(int) BOOST_NOEXCEPT_OR_NOTHROW - { return vec_iterator(m_ptr++); } + { BOOST_ASSERT(!!m_ptr); return vec_iterator(m_ptr++); } BOOST_CONTAINER_FORCEINLINE vec_iterator& operator--() BOOST_NOEXCEPT_OR_NOTHROW - { --m_ptr; return *this; } + { BOOST_ASSERT(!!m_ptr); --m_ptr; return *this; } BOOST_CONTAINER_FORCEINLINE vec_iterator operator--(int) BOOST_NOEXCEPT_OR_NOTHROW - { return vec_iterator(m_ptr--); } + { BOOST_ASSERT(!!m_ptr); return vec_iterator(m_ptr--); } //Arithmetic BOOST_CONTAINER_FORCEINLINE vec_iterator& operator+=(difference_type off) BOOST_NOEXCEPT_OR_NOTHROW - { m_ptr += off; return *this; } + { BOOST_ASSERT(!!m_ptr); m_ptr += off; return *this; } BOOST_CONTAINER_FORCEINLINE vec_iterator& operator-=(difference_type off) BOOST_NOEXCEPT_OR_NOTHROW - { m_ptr -= off; return *this; } + { BOOST_ASSERT(!!m_ptr); m_ptr -= off; return *this; } BOOST_CONTAINER_FORCEINLINE friend vec_iterator operator+(const vec_iterator &x, difference_type off) BOOST_NOEXCEPT_OR_NOTHROW - { return vec_iterator(x.m_ptr+off); } + { BOOST_ASSERT(!!x.m_ptr); return vec_iterator(x.m_ptr+off); } BOOST_CONTAINER_FORCEINLINE friend vec_iterator operator+(difference_type off, vec_iterator right) BOOST_NOEXCEPT_OR_NOTHROW - { right.m_ptr += off; return right; } + { BOOST_ASSERT(!!right.m_ptr); right.m_ptr += off; return right; } BOOST_CONTAINER_FORCEINLINE friend vec_iterator operator-(vec_iterator left, difference_type off) BOOST_NOEXCEPT_OR_NOTHROW - { left.m_ptr -= off; return left; } + { BOOST_ASSERT(!!left.m_ptr); 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 { return left.m_ptr - right.m_ptr; }