| 373 | }; |
| 374 | |
| 375 | struct const_reverse_iterator { |
| 376 | const_iterator it; |
| 377 | const_reverse_iterator(const_iterator i) FL_NOEXCEPT : it(i) {} |
| 378 | const T &operator*() const FL_NOEXCEPT { return *(it - 1); } |
| 379 | const T *operator->() const FL_NOEXCEPT { return (it - 1); } |
| 380 | const_reverse_iterator &operator++() FL_NOEXCEPT { |
| 381 | --it; |
| 382 | return *this; |
| 383 | } |
| 384 | bool operator==(const const_reverse_iterator &other) const FL_NOEXCEPT { |
| 385 | return it == other.it; |
| 386 | } |
| 387 | bool operator!=(const const_reverse_iterator &other) const FL_NOEXCEPT { |
| 388 | return it != other.it; |
| 389 | } |
| 390 | }; |
| 391 | |
| 392 | // Iterator support |
| 393 | iterator begin() FL_NOEXCEPT { return &memory()[0]; } |