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 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 {
concept derived_iter;
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 boost {
namespace stl_interfaces {
template<typename Derived, element_layout Contiguity>
struct sequence_container_interface;
template<typename ContainerInterface>
constexpr auto swap(ContainerInterface &, ContainerInterface &);
template<typename ContainerInterface>
constexpr auto
operator==(ContainerInterface const &, ContainerInterface const &);
template<typename ContainerInterface>
constexpr auto
operator!=(ContainerInterface const &, ContainerInterface const &);
template<typename ContainerInterface>
constexpr auto
operator<(ContainerInterface const &, ContainerInterface const &);
template<typename ContainerInterface>
constexpr auto
operator<=(ContainerInterface const &, ContainerInterface const &);
template<typename ContainerInterface>
constexpr auto
operator>(ContainerInterface const &, ContainerInterface const &);
template<typename ContainerInterface>
constexpr auto
operator>=(ContainerInterface const &, ContainerInterface const &);
namespace v1_dtl {
template<typename D, typename = void> struct clear_impl;
template<typename D>
struct clear_impl<D, void_t< decltype(std::declval< D >().clear())>>;
typedef std::is_convertible< typename std::iterator_traits< Iter >::iterator_category, std::input_iterator_tag > in_iter;
template<typename D, element_layout Contiguity>
void derived_container(sequence_container_interface< D, Contiguity > const &);
}
}
}