Range-v3
Range algorithms, views, and actions for the Standard Library
ranges::common_iterator< I, S > Struct Template Reference

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_iteratoroperator++ ()
 
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_iteratoroperator= (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>