34 ++a.iter_prop_mutable();
47 --a.iter_prop_mutable();
58 constexpr friend Derived &
operator+=(Derived &a,
const std::ptrdiff_t n)
60 a.iter_prop_mutable() += n;
64 constexpr friend Derived &
operator-=(Derived &a,
const std::ptrdiff_t n)
66 a.iter_prop_mutable() -= n;
70 constexpr friend Derived
operator+(
const Derived &a,
const std::ptrdiff_t n)
73 copy.iter_prop_mutable() += n;
77 constexpr friend Derived
operator-(
const Derived &a,
const std::ptrdiff_t n)
80 copy.iter_prop_mutable() -= n;
84 constexpr friend auto operator-(
const Derived &a,
const Derived &
b)
86 return a.iter_prop() -
b.iter_prop();
89 constexpr friend bool operator!=(
const Derived &a,
const Derived &
b)
91 return a.iter_prop() !=
b.iter_prop();
94 constexpr friend bool operator==(
const Derived &a,
const Derived &
b)
96 return a.iter_prop() ==
b.iter_prop();
99 constexpr friend bool operator<(
const Derived &a,
const Derived &
b)
101 return a.iter_prop() <
b.iter_prop();
104 constexpr friend bool operator>(
const Derived &a,
const Derived &
b)
106 return a.iter_prop() >
b.iter_prop();
109 constexpr friend bool operator<=(
const Derived &a,
const Derived &
b)
111 return a.iter_prop() <=
b.iter_prop();
114 constexpr friend bool operator>=(
const Derived &a,
const Derived &
b)
116 return a.iter_prop() >=
b.iter_prop();
119 constexpr decltype(
auto)
operator[](
const std::ptrdiff_t
i)
121 return *(*
static_cast<Derived *
>(
this) +
i);
124 constexpr decltype(
auto)
operator[](
const std::ptrdiff_t
i)
const
126 return *(*
static_cast<const Derived *
>(
this) +
i);
131 const auto &const_iter_prop =
static_cast<const Derived *
>(
this)->iter_prop();
132 return const_cast<std::remove_const_t<std::remove_reference_t<decltype(const_iter_prop)
>> &>(
constexpr friend Derived operator-(const Derived &a, const std::ptrdiff_t n)
auto & iter_prop_mutable()
constexpr friend Derived operator++(Derived &a, int)
std::ptrdiff_t difference_type
constexpr friend Derived operator+(const Derived &a, const std::ptrdiff_t n)
constexpr friend Derived operator--(Derived &a, int)
constexpr friend Derived & operator--(Derived &a)
constexpr friend auto operator-(const Derived &a, const Derived &b)
std::random_access_iterator_tag iterator_category
constexpr friend Derived & operator-=(Derived &a, const std::ptrdiff_t n)
constexpr friend bool operator>(const Derived &a, const Derived &b)
constexpr friend bool operator<(const Derived &a, const Derived &b)
constexpr friend bool operator<=(const Derived &a, const Derived &b)
constexpr friend Derived & operator++(Derived &a)
constexpr friend bool operator==(const Derived &a, const Derived &b)
constexpr friend bool operator!=(const Derived &a, const Derived &b)
constexpr friend Derived & operator+=(Derived &a, const std::ptrdiff_t n)
constexpr friend bool operator>=(const Derived &a, const Derived &b)