Reformatted reverse_iterator.hpp.

This commit is contained in:
Andrey Semashev 2025-02-07 00:25:57 +03:00
parent 34f703cfb6
commit 1a58ca89d1

View File

@ -4,8 +4,8 @@
// Distributed under the Boost Software License, Version 1.0. (See // Distributed under the Boost Software License, Version 1.0. (See
// accompanying file LICENSE_1_0.txt or copy at // accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt) // http://www.boost.org/LICENSE_1_0.txt)
#ifndef BOOST_REVERSE_ITERATOR_23022003THW_HPP #ifndef BOOST_ITERATOR_REVERSE_ITERATOR_23022003THW_HPP
#define BOOST_REVERSE_ITERATOR_23022003THW_HPP #define BOOST_ITERATOR_REVERSE_ITERATOR_23022003THW_HPP
#include <boost/iterator/iterator_adaptor.hpp> #include <boost/iterator/iterator_adaptor.hpp>
#include <boost/iterator/enable_if_convertible.hpp> #include <boost/iterator/enable_if_convertible.hpp>
@ -13,60 +13,58 @@
namespace boost { namespace boost {
namespace iterators { namespace iterators {
// template< typename Iterator >
// class reverse_iterator :
// public iterator_adaptor< reverse_iterator< Iterator >, Iterator >
template <class Iterator> {
class reverse_iterator friend class iterator_core_access;
: public iterator_adaptor< reverse_iterator<Iterator>, Iterator >
{
typedef iterator_adaptor< reverse_iterator<Iterator>, Iterator > super_t;
friend class iterator_core_access; private:
using super_t = iterator_adaptor< reverse_iterator< Iterator >, Iterator >;
public: public:
reverse_iterator() {} reverse_iterator() = default;
explicit reverse_iterator(Iterator x) explicit reverse_iterator(Iterator x) :
: super_t(x) {} super_t(x)
{}
template<class OtherIterator> template<
reverse_iterator( typename OtherIterator,
reverse_iterator<OtherIterator> const& r typename = enable_if_convertible_t< OtherIterator, Iterator >
, typename enable_if_convertible<OtherIterator, Iterator>::type* = 0 >
) reverse_iterator(reverse_iterator< OtherIterator > const& r) :
: super_t(r.base()) super_t(r.base())
{} {}
private: private:
typename super_t::reference dereference() const typename super_t::reference dereference() const
{ {
Iterator it = this->base_reference(); Iterator it = this->base_reference();
--it; --it;
return *it; return *it;
} }
void increment() { --this->base_reference(); } void increment() { --this->base_reference(); }
void decrement() { ++this->base_reference(); } void decrement() { ++this->base_reference(); }
void advance(typename super_t::difference_type n) void advance(typename super_t::difference_type n)
{ {
this->base_reference() -= n; this->base_reference() -= n;
} }
template <class OtherIterator> template< typename OtherIterator >
typename super_t::difference_type typename super_t::difference_type distance_to(reverse_iterator< OtherIterator > const& y) const
distance_to(reverse_iterator<OtherIterator> const& y) const {
{ return this->base_reference() - y.base();
return this->base_reference() - y.base(); }
} };
};
template <class BidirectionalIterator> template< typename Iterator >
inline reverse_iterator<BidirectionalIterator> make_reverse_iterator(BidirectionalIterator x) inline reverse_iterator< Iterator > make_reverse_iterator(Iterator x)
{ {
return reverse_iterator<BidirectionalIterator>(x); return reverse_iterator< Iterator >(x);
} }
} // namespace iterators } // namespace iterators
@ -75,4 +73,4 @@ using iterators::make_reverse_iterator;
} // namespace boost } // namespace boost
#endif // BOOST_REVERSE_ITERATOR_23022003THW_HPP #endif // BOOST_ITERATOR_REVERSE_ITERATOR_23022003THW_HPP