BOOST_STL_INTERFACES_STATIC_ASSERT_CONCEPT(type, concept_name)
BOOST_STL_INTERFACES_STATIC_ASSERT_ITERATOR_TRAITS(iter, category, concept, value_type, reference, pointer, difference_type)
namespace boost {
namespace stl_interfaces {
struct access;
template<typename Derived, typename IteratorConcept, typename ValueType,
typename Reference, typename Pointer, typename DifferenceType>
struct iterator_interface;
template<typename T> struct proxy_arrow_result;
typedef iterator_interface< Derived, IteratorConcept, ValueType, Reference, proxy_arrow_result< Reference >, DifferenceType > proxy_iterator_interface;
template<typename IteratorInterface1, typename IteratorInterface2,
typename Enable = std::enable_if_t<!v1_dtl::ra_iter<IteratorInterface1>::value> >
constexpr auto operator==(IteratorInterface1, IteratorInterface2);
template<typename IteratorInterface1, typename IteratorInterface2>
constexpr auto operator!=(IteratorInterface1, IteratorInterface2);
template<typename IteratorInterface1, typename IteratorInterface2>
constexpr auto operator<(IteratorInterface1, IteratorInterface2);
template<typename IteratorInterface1, typename IteratorInterface2>
constexpr auto operator<=(IteratorInterface1, IteratorInterface2);
template<typename IteratorInterface1, typename IteratorInterface2>
constexpr auto operator>(IteratorInterface1, IteratorInterface2);
template<typename IteratorInterface1, typename IteratorInterface2>
constexpr auto operator>=(IteratorInterface1, IteratorInterface2);
template<typename D>
constexpr auto operator+(D it, typename D::difference_type n);
template<typename D>
constexpr auto operator+(typename D::difference_type n, D it);
template<typename D1, typename D2>
constexpr auto operator-(D1 lhs, D2 rhs);
template<typename D>
constexpr auto operator-(D it, typename D::difference_type n);
template<typename D1, typename D2>
constexpr bool operator<(D1 lhs, D2 rhs);
template<typename D1, typename D2>
constexpr bool operator<=(D1 lhs, D2 rhs);
template<typename D1, typename D2>
constexpr bool operator>(D1 lhs, D2 rhs);
template<typename D1, typename D2>
constexpr bool operator>=(D1 lhs, D2 rhs);
template<typename D1, typename D2>
constexpr bool operator==(D1 lhs, D2 rhs);
template<typename D1, typename D2>
constexpr auto operator!=(D1 lhs, D2 rhs);
template<typename D>
constexpr auto operator+(D it, typename D::difference_type n);
template<typename D>
constexpr auto operator+(typename D::difference_type n, D it);
template<typename D1, typename D2>
constexpr auto operator-(D1 lhs, D2 rhs);
template<typename D>
constexpr auto operator-(D it, typename D::difference_type n);
template<typename D1, typename D2>
constexpr bool operator<(D1 lhs, D2 rhs);
template<typename D1, typename D2>
constexpr bool operator<=(D1 lhs, D2 rhs);
template<typename D1, typename D2>
constexpr bool operator>(D1 lhs, D2 rhs);
template<typename D1, typename D2>
constexpr bool operator>=(D1 lhs, D2 rhs);
template<typename D1, typename D2>
constexpr bool operator==(D1 lhs, D2 rhs);
template<typename D1, typename D2>
constexpr auto operator!=(D1 lhs, D2 rhs);
namespace v1_dtl {
template<typename Iterator, typename DifferenceType, typename = void>
struct plus_eq;
template<typename Iterator, typename DifferenceType>
struct plus_eq<Iterator, DifferenceType, void_t< decltype(std::declval< Iterator & >()+=std::declval< DifferenceType >())>>;
template<typename Iterator, typename = void> struct ra_iter;
template<typename Iterator>
struct ra_iter<Iterator, void_t< typename Iterator::iterator_concept >>;
template<typename D, typename IteratorConcept, typename ValueType,
typename Reference, typename Pointer, typename DifferenceType>
void derived_iterator(iterator_interface< D, IteratorConcept, ValueType, Reference, Pointer, DifferenceType > const &);
}
namespace v2_dtl {
template<typename D, typename IteratorConcept, typename ValueType,
typename Reference, typename Pointer, typename DifferenceType>
void derived_iterator(v2::iterator_interface< D, IteratorConcept, ValueType, Reference, Pointer, DifferenceType > const &);
}
namespace v3_dtl {
template<typename IteratorConcept, typename ValueType,
typename Reference, typename Pointer, typename DifferenceType>
void derived_iterator(v3::iterator_interface< IteratorConcept, ValueType, Reference, Pointer, DifferenceType > const &);
}
}
}