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

Instances and minimal complete definitions | Friends | Public Types | Public Member Functions | List of all members
ranges::common_iterator< I, S > Struct Template Reference
Iterator

## Friends
variant< I, S > & | detail::cidata (common_iterator< I, S > &)
variant< I, S > const & | detail::cidata (common_iterator< I, S > const &)
template<typename I_ = I>
constexpr friend auto | iter_move (common_iterator const &i) noexcept(detail::has_nothrow_iter_move_v< I >) -> iter_rvalue_reference_t< I >
template<typename I2 , typename S2 >
auto | iter_swap (common_iterator const &x, common_iterator< I2, S2 > const &y) noexcept(is_nothrow_indirectly_swappable< I, I2 >::value) -> void

## Public Types
using | difference_type = iter_difference_t< I >

## Public Member Functions
template<typename I2 , typename S2 >
| common_iterator (common_iterator< I2, S2 > const &that)
| common_iterator (I i)
| common_iterator (S s)
auto | operator* () const noexcept(noexcept(iter_reference_t< I >(*std::declval< I const & >()))) -> iter_reference_t< I >
iter_reference_t< I > | operator* () noexcept(noexcept(iter_reference_t< I >(*std::declval< I & >())))
common_iterator & | operator++ ()
auto | operator++ (int) -> common_iterator
auto | operator++ (int) -> decltype(std::declval< I & >()++)
template<typename J = I>
auto | operator-> () const noexcept(noexcept(common_iterator::operator_arrow_(std::declval< I const & >(), 42))) -> decltype(common_iterator::operator_arrow_(std::declval< J const & >(), 42))
template<typename I2 , typename S2 >
common_iterator & | operator= (common_iterator< I2, S2 > const &that)

## Member Function Documentation

## ◆ operator->()

template<typename I , typename S >
template<typename J = I>

auto ranges::common_iterator< I, S >::operator-> | ( |  | ) | const -> decltype(common_iterator::operator_arrow_(std::declval<J const &>(), 42))
| noexcept

Precondition
  requires `indirectly_readable<J>`

## ◆ operator=()

template<typename I , typename S >
template<typename I2 , typename S2 >

common_iterator& ranges::common_iterator< I, S >::operator= | ( | common_iterator< I2, S2 > const & | that | ) |

Precondition
  requires `convertible_to<I2, I> && convertible_to<S2, S>`

## Constructor & Destructor Documentation

## ◆ common_iterator()

template<typename I , typename S >
template<typename I2 , typename S2 >

ranges::common_iterator< I, S >::common_iterator | ( | common_iterator< I2, S2 > const & | that | ) |

Precondition
  requires `convertible_to<I2, I> && convertible_to<S2, S>`