diff --git a/include/boost/container/stable_vector.hpp b/include/boost/container/stable_vector.hpp
index 691cf58..c952421 100644
|
a
|
b
|
struct node
|
| 131 | 131 | }; |
| 132 | 132 | |
| 133 | 133 | template<typename Pointer, bool IsConst> |
| 134 | | class iterator |
| | 134 | class iterator_vs |
| 135 | 135 | { |
| 136 | 136 | typedef boost::intrusive::pointer_traits<Pointer> non_const_ptr_traits; |
| 137 | 137 | public: |
| … |
… |
class iterator
|
| 168 | 168 | |
| 169 | 169 | public: |
| 170 | 170 | |
| 171 | | explicit iterator(node_ptr p) BOOST_CONTAINER_NOEXCEPT |
| | 171 | explicit iterator_vs(node_ptr p) BOOST_CONTAINER_NOEXCEPT |
| 172 | 172 | : m_pn(p) |
| 173 | 173 | {} |
| 174 | 174 | |
| 175 | | iterator() BOOST_CONTAINER_NOEXCEPT |
| | 175 | iterator_vs() BOOST_CONTAINER_NOEXCEPT |
| 176 | 176 | {} |
| 177 | 177 | |
| 178 | | iterator(iterator<Pointer, false> const& other) BOOST_CONTAINER_NOEXCEPT |
| | 178 | iterator_vs(iterator_vs<Pointer, false> const& other) BOOST_CONTAINER_NOEXCEPT |
| 179 | 179 | : m_pn(other.node_pointer()) |
| 180 | 180 | {} |
| 181 | 181 | |
| … |
… |
class iterator
|
| 197 | 197 | } |
| 198 | 198 | |
| 199 | 199 | //Increment / Decrement |
| 200 | | iterator& operator++() BOOST_CONTAINER_NOEXCEPT |
| | 200 | iterator_vs& operator++() BOOST_CONTAINER_NOEXCEPT |
| 201 | 201 | { |
| 202 | 202 | if(node_base_ptr_ptr p = this->m_pn->up){ |
| 203 | 203 | ++p; |
| … |
… |
class iterator
|
| 206 | 206 | return *this; |
| 207 | 207 | } |
| 208 | 208 | |
| 209 | | iterator operator++(int) BOOST_CONTAINER_NOEXCEPT |
| 210 | | { iterator tmp(*this); ++*this; return iterator(tmp); } |
| | 209 | iterator_vs operator++(int) BOOST_CONTAINER_NOEXCEPT |
| | 210 | { iterator_vs tmp(*this); ++*this; return iterator_vs(tmp); } |
| 211 | 211 | |
| 212 | | iterator& operator--() BOOST_CONTAINER_NOEXCEPT |
| | 212 | iterator_vs& operator--() BOOST_CONTAINER_NOEXCEPT |
| 213 | 213 | { |
| 214 | 214 | if(node_base_ptr_ptr p = this->m_pn->up){ |
| 215 | 215 | --p; |
| … |
… |
class iterator
|
| 218 | 218 | return *this; |
| 219 | 219 | } |
| 220 | 220 | |
| 221 | | iterator operator--(int) BOOST_CONTAINER_NOEXCEPT |
| 222 | | { iterator tmp(*this); --*this; return iterator(tmp); } |
| | 221 | iterator_vs operator--(int) BOOST_CONTAINER_NOEXCEPT |
| | 222 | { iterator_vs tmp(*this); --*this; return iterator_vs(tmp); } |
| 223 | 223 | |
| 224 | 224 | reference operator[](difference_type off) const BOOST_CONTAINER_NOEXCEPT |
| 225 | 225 | { |
| 226 | | iterator tmp(*this); |
| | 226 | iterator_vs tmp(*this); |
| 227 | 227 | tmp += off; |
| 228 | 228 | return *tmp; |
| 229 | 229 | } |
| 230 | 230 | |
| 231 | | iterator& operator+=(difference_type off) BOOST_CONTAINER_NOEXCEPT |
| | 231 | iterator_vs& operator+=(difference_type off) BOOST_CONTAINER_NOEXCEPT |
| 232 | 232 | { |
| 233 | 233 | if(node_base_ptr_ptr p = this->m_pn->up){ |
| 234 | 234 | p += off; |
| … |
… |
class iterator
|
| 237 | 237 | return *this; |
| 238 | 238 | } |
| 239 | 239 | |
| 240 | | friend iterator operator+(const iterator &left, difference_type off) BOOST_CONTAINER_NOEXCEPT |
| | 240 | friend iterator_vs operator+(const iterator_vs &left, difference_type off) BOOST_CONTAINER_NOEXCEPT |
| 241 | 241 | { |
| 242 | | iterator tmp(left); |
| | 242 | iterator_vs tmp(left); |
| 243 | 243 | tmp += off; |
| 244 | 244 | return tmp; |
| 245 | 245 | } |
| 246 | 246 | |
| 247 | | friend iterator operator+(difference_type off, const iterator& right) BOOST_CONTAINER_NOEXCEPT |
| | 247 | friend iterator_vs operator+(difference_type off, const iterator_vs& right) BOOST_CONTAINER_NOEXCEPT |
| 248 | 248 | { |
| 249 | | iterator tmp(right); |
| | 249 | iterator_vs tmp(right); |
| 250 | 250 | tmp += off; |
| 251 | 251 | return tmp; |
| 252 | 252 | } |
| 253 | 253 | |
| 254 | | iterator& operator-=(difference_type off) BOOST_CONTAINER_NOEXCEPT |
| | 254 | iterator_vs& operator-=(difference_type off) BOOST_CONTAINER_NOEXCEPT |
| 255 | 255 | { *this += -off; return *this; } |
| 256 | 256 | |
| 257 | | friend iterator operator-(const iterator &left, difference_type off) BOOST_CONTAINER_NOEXCEPT |
| | 257 | friend iterator_vs operator-(const iterator_vs &left, difference_type off) BOOST_CONTAINER_NOEXCEPT |
| 258 | 258 | { |
| 259 | | iterator tmp(left); |
| | 259 | iterator_vs tmp(left); |
| 260 | 260 | tmp -= off; |
| 261 | 261 | return tmp; |
| 262 | 262 | } |
| 263 | 263 | |
| 264 | | friend difference_type operator-(const iterator& left, const iterator& right) BOOST_CONTAINER_NOEXCEPT |
| | 264 | friend difference_type operator-(const iterator_vs& left, const iterator_vs& right) BOOST_CONTAINER_NOEXCEPT |
| 265 | 265 | { return left.m_pn->up - right.m_pn->up; } |
| 266 | 266 | |
| 267 | 267 | //Comparison operators |
| 268 | | friend bool operator== (const iterator& l, const iterator& r) BOOST_CONTAINER_NOEXCEPT |
| | 268 | friend bool operator== (const iterator_vs& l, const iterator_vs& r) BOOST_CONTAINER_NOEXCEPT |
| 269 | 269 | { return l.m_pn == r.m_pn; } |
| 270 | 270 | |
| 271 | | friend bool operator!= (const iterator& l, const iterator& r) BOOST_CONTAINER_NOEXCEPT |
| | 271 | friend bool operator!= (const iterator_vs& l, const iterator_vs& r) BOOST_CONTAINER_NOEXCEPT |
| 272 | 272 | { return l.m_pn != r.m_pn; } |
| 273 | 273 | |
| 274 | | friend bool operator< (const iterator& l, const iterator& r) BOOST_CONTAINER_NOEXCEPT |
| | 274 | friend bool operator< (const iterator_vs& l, const iterator_vs& r) BOOST_CONTAINER_NOEXCEPT |
| 275 | 275 | { return l.m_pn->up < r.m_pn->up; } |
| 276 | 276 | |
| 277 | | friend bool operator<= (const iterator& l, const iterator& r) BOOST_CONTAINER_NOEXCEPT |
| | 277 | friend bool operator<= (const iterator_vs& l, const iterator_vs& r) BOOST_CONTAINER_NOEXCEPT |
| 278 | 278 | { return l.m_pn->up <= r.m_pn->up; } |
| 279 | 279 | |
| 280 | | friend bool operator> (const iterator& l, const iterator& r) BOOST_CONTAINER_NOEXCEPT |
| | 280 | friend bool operator> (const iterator_vs& l, const iterator_vs& r) BOOST_CONTAINER_NOEXCEPT |
| 281 | 281 | { return l.m_pn->up > r.m_pn->up; } |
| 282 | 282 | |
| 283 | | friend bool operator>= (const iterator& l, const iterator& r) BOOST_CONTAINER_NOEXCEPT |
| | 283 | friend bool operator>= (const iterator_vs& l, const iterator_vs& r) BOOST_CONTAINER_NOEXCEPT |
| 284 | 284 | { return l.m_pn->up >= r.m_pn->up; } |
| 285 | 285 | }; |
| 286 | 286 | |
| … |
… |
class stable_vector
|
| 501 | 501 | { allocator_version_traits_t::deallocate_individual(this->priv_node_alloc(), holder); } |
| 502 | 502 | |
| 503 | 503 | friend class stable_vector_detail::clear_on_destroy<stable_vector>; |
| 504 | | typedef stable_vector_detail::iterator |
| | 504 | typedef stable_vector_detail::iterator_vs |
| 505 | 505 | < typename allocator_traits<Allocator>::pointer |
| 506 | 506 | , false> iterator_impl; |
| 507 | | typedef stable_vector_detail::iterator |
| | 507 | typedef stable_vector_detail::iterator_vs |
| 508 | 508 | < typename allocator_traits<Allocator>::pointer |
| 509 | 509 | , false> const_iterator_impl; |
| 510 | 510 | #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED |