ranges::basic_iterator< Cur > Struct Template Reference
Iterator
Inheritance diagram for ranges::basic_iterator< Cur >:

## Friends

template<typename >
struct | basic_iterator
template<typename C = Cur>
constexpr auto | iter_move (basic_iterator const &it) noexcept(noexcept(range_access::move(std::declval< C const &>()))) -> decltype(range_access::move(std::declval< C const &>())) requires same_as< C, Cur > &&detail::input_cursor< Cur >

## Public Member Functions

template<typename OtherCur >
constexpr | basic_iterator (basic_iterator< OtherCur > that) requires(!same_as< OtherCur
constexpr auto | operator* () const noexcept(noexcept(range_access::read(std::declval< Cur const &>()))) -> const_reference_t requires detail::readable_cursor< Cur > &&(!detail::is_writable_cursor< Cur >::value)
constexpr auto | operator* () noexcept(noexcept(iter_reference_t{ std::declval< Cur &>()})) -> iter_reference_t requires detail::has_cursor_next< Cur > &&detail::is_writable_cursor< Cur >::value
constexpr auto | operator* () const noexcept(noexcept(const_reference_t{std::declval< Cur const &>()})) -> const_reference_t requires detail::has_cursor_next< Cur > &&detail::is_writable_cursor< Cur const >::value
constexpr auto | operator* () noexcept -> basic_iterator &requires(!detail::has_cursor_next< Cur >)
constexpr auto | operator++ () -> basic_iterator &requires detail::has_cursor_next< Cur >
constexpr auto | operator++ () noexcept -> basic_iterator &requires(!detail::has_cursor_next< Cur >)
constexpr auto | operator++ (int)
constexpr auto | operator+= (difference_type n) -> basic_iterator &requires detail::random_access_cursor< Cur >
constexpr auto | operator-- () -> basic_iterator &requires detail::bidirectional_cursor< Cur >
constexpr auto | operator-- (int) -> basic_iterator requires detail::bidirectional_cursor< Cur >
constexpr auto | operator-= (difference_type n) -> basic_iterator &requires detail::random_access_cursor< Cur >
template<typename C = Cur>
constexpr auto | operator-> () const noexcept(noexcept(range_access::arrow(std::declval< C const &>()))) -> detail::cursor_arrow_t< C > requires detail::has_cursor_arrow< C >
template<typename C = Cur>
constexpr auto | operator-> () const noexcept(noexcept(*std::declval< basic_iterator const &>())) -> meta::_t< std::add_pointer< const_reference_t >> 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 >>
template<typename OtherCur >
constexpr auto | operator= (basic_iterator< OtherCur > that) -> basic_iterator &requires(!same_as< OtherCur, Cur >) &&convertible_to< OtherCur, Cur >
constexpr auto | operator[] (difference_type n) const -> const_reference_t requires detail::random_access_cursor< Cur >

## Public Attributes

constexpr Cur &&convertible_to< OtherCur, Cur > && | constructible_from< mixin_t, OtherCur >: base_t{std::move(that.pos())} {} using base_t::base_t