|
| common_iterator ()=default |
|
constexpr | common_iterator (I i) |
|
constexpr | common_iterator (S s) |
|
template<typename I2 , typename S2 , std::enable_if_t< conjunction< convertible_to< const I2 &, I >, convertible_to< const S2 &, S > >::value, int > = 0> |
constexpr | common_iterator (const common_iterator< I2, S2 > &x) noexcept(conjunction< std::is_nothrow_constructible< I, const I2 & >, std::is_nothrow_constructible< S, const S2 & >>::value) |
|
template<typename I2 , typename S2 > |
constexpr common_iterator & | operator= (const common_iterator< I2, S2 > &x) noexcept(conjunction< std::is_nothrow_constructible< I, const I2 & >, std::is_nothrow_assignable< I, const I2 & >, std::is_nothrow_constructible< S, const S2 & >, std::is_nothrow_assignable< S, const S2 & > >::value) |
|
constexpr decltype(auto) | operator* () |
|
template<typename I2 = I, std::enable_if_t< dereferenceable< const I2 >::value, int > = 0> |
constexpr decltype(auto) | operator* () const |
|
template<typename I2 = I, std::enable_if_t< conjunction< indirectly_readable< const I2 >, disjunction< std::is_pointer< I2 >, has_operator_arrow< const I2 & >, std::is_reference< iter_reference_t< I2 >>, constructible_from< iter_value_t< I2 >, iter_reference_t< I2 >> > >::value, int > = 0> |
constexpr auto | operator-> () const |
|
constexpr common_iterator & | operator++ () |
|
constexpr decltype(auto) | operator++ (int) |
|
template<typename Dummy = void, std::enable_if_t< conjunction< std::is_void< Dummy >, input_iterator< I > >::value, int > = 0> |
constexpr decltype(auto) friend | iter_move (const common_iterator &i) noexcept(noexcept(ranges::iter_move(std::declval< const I & >()))) |
|
|
template<typename I2 , typename S2 , std::enable_if_t< conjunction< sentinel_for< S2, I >, sentinel_for< S, I2 >, negation< equality_comparable_with< I, I2 > > >::value, int > = 0> |
constexpr friend bool | operator== (const common_iterator &x, const common_iterator< I2, S2 > &y) |
|
template<typename I2 , typename S2 , std::enable_if_t< conjunction< sentinel_for< S2, I >, sentinel_for< S, I2 >, negation< equality_comparable_with< I, I2 > > >::value, int > = 0> |
constexpr friend bool | operator!= (const common_iterator &x, const common_iterator< I2, S2 > &y) |
|
template<typename I2 , typename S2 , std::enable_if_t< conjunction< sentinel_for< S2, I >, sentinel_for< S, I2 >, equality_comparable_with< I, I2 > >::value, int > = 0> |
constexpr friend bool | operator== (const common_iterator &x, const common_iterator< I2, S2 > &y) |
|
template<typename I2 , typename S2 , std::enable_if_t< conjunction< sentinel_for< S2, I >, sentinel_for< S, I2 >, equality_comparable_with< I, I2 > >::value, int > = 0> |
constexpr friend bool | operator!= (const common_iterator &x, const common_iterator< I2, S2 > &y) |
|
template<typename I2 , typename S2 , std::enable_if_t< conjunction< sized_sentinel_for< I2, I >, sized_sentinel_for< S2, I >, sentinel_for< S, I2 > >::value, int > = 0> |
constexpr friend iter_difference_t< I2 > | operator- (const common_iterator &x, const common_iterator< I2, S2 > &y) |
|
template<typename I2 , typename S2 , std::enable_if_t< indirectly_swappable< I2, I > ::value, int > = 0> |
constexpr friend void | iter_swap (const common_iterator &x, const common_iterator< I2, S2 > &y) noexcept(noexcept(ranges::iter_swap(std::declval< const I & >(), std::declval< const I2 & >()))) |
|