| Public Types | |
| using | difference_type = iter_difference_t< I > | 
| Public Member Functions | |
| template<typename I2 , typename S2 > requires convertible_to<I2, I> && convertible_to<S2, S> | |
| 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> requires indirectly_readable<J> | |
| 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 > requires convertible_to<I2, I> && convertible_to<S2, S> | |
| common_iterator & | operator= (common_iterator< I2, S2 > const &that) | 
| 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> requires input_iterator<I_> | |
| constexpr 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 > requires indirectly_swappable<I2, I> | |
| auto | iter_swap (common_iterator const &x, common_iterator< I2, S2 > const &y) noexcept(is_nothrow_indirectly_swappable< I, I2 >::value) -> void |