Range-v3 Range algorithms, views, and actions for the Standard Library |

Friends | Public Member Functions | List of all members
ranges::basic_iterator< Cur > Struct Template Reference
Iterator
Inheritance diagram for ranges::basic_iterator< Cur >:

## Friends
template<typename C = Cur>
constexpr friend auto | iter_move (basic_iterator const &it) noexcept(noexcept(range_access::move(std::declval< C const & >()))) -> decltype(range_access::move(std::declval< C const & >()))

## Public Member Functions
template<typename OtherCur >
constexpr | basic_iterator (basic_iterator< OtherCur > that)
| basic_iterator (Cur &&cur)
| basic_iterator (Cur const &cur)
constexpr auto | operator* () const noexcept(noexcept(const_reference_t{std::declval< Cur const & >()})) -> const_reference_t
constexpr auto | operator* () const noexcept(noexcept(range_access::read(std::declval< Cur const & >()))) -> const_reference_t
constexpr auto | operator* () noexcept -> basic_iterator &
constexpr auto | operator* () noexcept(noexcept(iter_reference_t{std::declval< Cur & >()})) -> iter_reference_t
constexpr auto | operator++ () -> basic_iterator &
constexpr auto | operator++ () noexcept -> basic_iterator &
constexpr auto | operator++ (int)
constexpr auto | operator+= (difference_type n) -> basic_iterator &
constexpr auto | operator-- () -> basic_iterator &
constexpr auto | operator-- (int) -> basic_iterator
constexpr auto | operator-= (difference_type n) -> basic_iterator &
template<typename C = Cur>
constexpr std::add_pointer_t< const_reference_t > | operator-> () const noexcept(noexcept(*std::declval< basic_iterator const & >()))
template<typename C = Cur>
constexpr detail::cursor_arrow_t< C > | operator-> () const noexcept(noexcept(range_access::arrow(std::declval< C const & >())))
template<typename OtherCur >
constexpr basic_iterator & | operator= (basic_iterator< OtherCur > that)
constexpr auto | operator[] (difference_type n) const -> const_reference_t

## Member Function Documentation

## ◆ operator->() [1/2]

template<typename Cur >
template<typename C = Cur>

constexpr std::add_pointer_t<const_reference_t> ranges::basic_iterator< Cur >::operator-> | ( |  | ) | const
| constexpr noexcept

Precondition
  requires `(!detail::has_cursor_arrow<C>) && detail::readable_cursor<C> && std::is_lvalue_reference<const_reference_t>::value && same_as<typename detail::iterator_associated_types_base<C>::value_type, uncvref_t<const_reference_t>>`

## ◆ operator->() [2/2]

template<typename Cur >
template<typename C = Cur>

constexpr detail::cursor_arrow_t<C> ranges::basic_iterator< Cur >::operator-> | ( |  | ) | const
| constexpr noexcept

Precondition
  requires `detail::has_cursor_arrow<C>`

## ◆ operator=()

template<typename Cur >
template<typename OtherCur >

constexpr basic_iterator& ranges::basic_iterator< Cur >::operator= | ( | basic_iterator< OtherCur > | that | ) |
| constexpr

Precondition
  requires `(!same_as<OtherCur, Cur>) && convertible_to<OtherCur, Cur>`

## Constructor & Destructor Documentation

## ◆ basic_iterator()

template<typename Cur >
template<typename OtherCur >

constexpr ranges::basic_iterator< Cur >::basic_iterator | ( | basic_iterator< OtherCur > | that | ) |
| constexpr

Precondition
  requires `(!same_as<OtherCur, Cur>) && convertible_to<OtherCur, Cur> && constructible_from<mixin_t, OtherCur>`