# Headers

= false
= true

An enumeration used to indicate whether the underlying data have a contiguous or discontiguous layout when instantiating ``view_interface`` and ``sequence_container_interface``.

A type for granting access to the private members of an iterator derived from ``iterator_interface``.

IteratorConcept
unspecified
std::remove_const_t< ValueType >
Reference
unspecified
DifferenceType
constexpr auto Derived
constexpr auto Derived
constexpr auto Derived
constexpr auto Derived
constexpr auto Derived `difference_type`
constexpr auto Derived std::enable_if_t<!`v1_dtl::plus_eq`<D, difference_type>::value>
constexpr auto Derived
constexpr auto Derived `int`
constexpr auto Derived `difference_type`
constexpr auto Derived `difference_type`
constexpr auto Derived std::enable_if_t<!`v1_dtl::plus_eq`<D, difference_type>::value>
constexpr auto Derived
constexpr auto Derived `int`
constexpr D & Derived `difference_type`
constexpr auto Derived `D`

The return type of `operator->()` in a proxy iterator.

This template is used as the default `Pointer` template parameter in the `proxy_iterator_interface` template alias. Note that the use of this template implies a copy or move of the underlying object of type `T`.

constexpr T const *
constexpr T *
T const &
T &&
void
false_type
Iterator
DifferenceType
void_t< decltype(std::declval< Iterator & >()+=std::declval< DifferenceType >())>
true_type
void
false_type
Iterator
void_t< typename Iterator::iterator_concept >
std::integral_constant< bool, std::is_base_of< std::random_access_iterator_tag, Iterator::iterator_concept >::value >
void ``iterator_interface`< D, IteratorConcept, ValueType, Reference, Pointer, DifferenceType > const &`
concept
void `v2::iterator_interface< D, IteratorConcept, ValueType, Reference, Pointer, DifferenceType > const &`

A template alias useful for defining proxy iterators.

See Also:

``iterator_interface``.

`iterator_interface`< Derived, IteratorConcept, ValueType, Reference, `proxy_arrow_result`< Reference >, DifferenceType >
constexpr auto std::enable_if_t<!v1_dtl::ra_iter<IteratorInterface1>::value> `IteratorInterface1` `IteratorInterface2`

Implementation of `operator==()`, implemented in terms of the iterator underlying IteratorInterface, for all iterators derived from ``iterator_interface``, except those with an iterator category derived from `std::random_access_iterator_tag`.

Implementation of `operator==()` for all iterators derived from ``iterator_interface`` that have an iterator category derived from `std::random_access_iterator_tag`.

constexpr auto `IteratorInterface1` `IteratorInterface2`

Implementation of `operator!=()` for all iterators derived from ``iterator_interface``.

constexpr auto `IteratorInterface1` `IteratorInterface2`

Implementation of `operator<()` for all iterators derived from ``iterator_interface`` that have an iterator category derived from `std::random_access_iterator_tag`.

constexpr auto `IteratorInterface1` `IteratorInterface2`

Implementation of `operator<=()` for all iterators derived from ``iterator_interface`` that have an iterator category derived from `std::random_access_iterator_tag`.

constexpr auto `IteratorInterface1` `IteratorInterface2`

Implementation of `operator>()` for all iterators derived from ``iterator_interface`` that have an iterator category derived from `std::random_access_iterator_tag`.

constexpr auto `IteratorInterface1` `IteratorInterface2`

Implementation of `operator>=()` for all iterators derived from ``iterator_interface`` that have an iterator category derived from `std::random_access_iterator_tag`.

constexpr bool `D1` `D2`
constexpr auto `D1` `D2`

`static_asserts` that type `type` models concept `concept_name`. This is useful for checking that an iterator, view, etc. that you write using one of the *`_interface` templates models the right C++ concept.

For example: `BOOST_STL_INTERFACES_STATIC_ASSERT_CONCEPT(my_iter, std::input_iterator)`.

This macro expands to nothing when `__cpp_lib_concepts` is not defined.

`static_asserts` that the types of all typedefs in `std::iterator_traits<iter>` match the remaining macro parameters. This is useful for checking that an iterator you write using `iterator_interface` has the correct iterator traits.

For example: `BOOST_STL_INTERFACES_STATIC_ASSERT_ITERATOR_TRAITS(my_iter, std::input_iterator_tag, std::input_iterator, int, int &, int *, std::ptrdiff_t)`.

This macro ignores the `concept` parameter when `__cpp_lib_concepts` is not defined.

constexpr auto `reverse_iterator< BidiIter >` `reverse_iterator< BidiIter >`
constexpr auto `reverse_iterator< BidiIter1 >` `reverse_iterator< BidiIter2 >`
auto `BidiIter`

Makes a `reverse_iterator<BidiIter>` from an iterator of type `Bidiiter`.

Makes a `reverse_iterator<BidiIter>` from an iterator of type `Bidiiter`. This only exists to make migration from Boost.STLInterfaces to C++20 easier; switch to the one in `std` as soon as you can.

element_layout
constexpr auto Derived
constexpr auto Derived
constexpr auto Derived element_layout Contiguity std::enable_if_t<C == element_layout::contiguous>
constexpr auto Derived element_layout Contiguity std::enable_if_t<C == element_layout::contiguous>
constexpr auto Derived
constexpr auto Derived
constexpr auto Derived
constexpr auto Derived
constexpr auto Derived `typename D::value_type const &`
constexpr auto Derived `typename D::value_type &&`
constexpr auto Derived
constexpr auto Derived std::enable_if_t< v1_dtl::decrementable_sentinel<D>::value && v1_dtl::common_range<D>::value>
constexpr auto Derived std::enable_if_t< v1_dtl::decrementable_sentinel<D>::value && v1_dtl::common_range<D>::value>
constexpr auto Derived `typename D::value_type const &`
constexpr auto Derived `typename D::value_type &&`
constexpr auto Derived
constexpr auto Derived `typename D::size_type`
constexpr auto Derived `typename D::size_type`
constexpr auto Derived `typename D::size_type`
constexpr auto Derived `typename D::size_type`
constexpr Iter Derived typename D::const_iterator
constexpr Iter Derived typename D::const_iterator
constexpr auto Derived
constexpr auto Derived
constexpr auto Derived std::enable_if_t<v1_dtl::common_range<D>::value>
constexpr auto Derived std::enable_if_t<v1_dtl::common_range<D>::value>
constexpr auto Derived
constexpr auto Derived
constexpr auto Derived
constexpr auto Derived
constexpr auto Derived `typename D::const_iterator` `typename D::value_type const &`
constexpr auto Derived `typename D::const_iterator` `typename D::value_type &&`
constexpr auto Derived `typename D::const_iterator` `typename D::size_type` `typename D::value_type const &`
constexpr auto Derived `typename D::const_iterator` `std::initializer_list< typename D::value_type >`
constexpr auto Derived `typename D::const_iterator`
constexpr auto Derived std::enable_if_t<v1_dtl::in_iter<InputIterator>::value> `InputIterator` `InputIterator`
constexpr auto Derived `typename D::size_type` `typename D::value_type const &`
constexpr auto Derived `std::initializer_list< typename D::value_type >`
constexpr auto Derived
constexpr auto Derived `std::initializer_list< typename D::value_type >`
void
constexpr void `D &`
D
void_t< decltype(std::declval< D >().clear())>
constexpr void `D &`
std::is_convertible< typename std::iterator_traits< Iter >::iterator_category, std::input_iterator_tag >
void element_layout ``sequence_container_interface`< D, Contiguity > const &`
constexpr auto `ContainerInterface &` `ContainerInterface &`

Implementation of free function `swap()` for all containers derived from ``sequence_container_interface``.

constexpr auto `ContainerInterface const &` `ContainerInterface const &`

Implementation of `operator==()` for all containers derived from ``sequence_container_interface``.

constexpr auto `ContainerInterface const &` `ContainerInterface const &`

Implementation of `operator!=()` for all containers derived from ``sequence_container_interface``.

constexpr auto `ContainerInterface const &` `ContainerInterface const &`

Implementation of `operator<()` for all containers derived from ``sequence_container_interface``.

constexpr auto `ContainerInterface const &` `ContainerInterface const &`

Implementation of `operator<=()` for all containers derived from ``sequence_container_interface``.

constexpr auto `ContainerInterface const &` `ContainerInterface const &`

Implementation of `operator>()` for all containers derived from ``sequence_container_interface``.

constexpr auto `ContainerInterface const &` `ContainerInterface const &`

Implementation of `operator>=()` for all containers derived from ``sequence_container_interface``.

Adapts an invocable `f` as a view adaptor. Calling `operator(args...)` will either: call `f(args...)` and return the result, if `f(args...)` is well-formed; or return `closure(stl_interfaces::bind_back(f, args...))` otherwise.

constexpr auto typename... `Args &&...`
F
boost::stl_interfaces::range_adaptor_closure< closure< F > >

An invocable consisting of a contained invocable `f`. Calling `operator()` with some argument `t` calls `f(t)` and returns the result. This type is typically used to capture a the result of a call to `bind_back()`.

decltype(auto) constexpr std::enable_if_t<detail::is_invocable_v<F const &, T>> `T &&`
F

A backwards-compatible implementation of C++23's `std::ranges::range_adaptor_closure`. ``range_adaptor_closure`` may be a struct template or may be an alias, as required to maintain compatability with the standard library's view adaptors.

int
frienddecltype(auto) constexpr std::enable_if_t<detail::is_invocable_v<D, T>> `T &&` `D &&`
frienddecltype(auto) constexpr std::enable_if_t<detail::is_invocable_v<D const &, T>> `T &&` `D const &`
constexpr auto typename... `Func &&` `Args &&...`

An implementation of `std::bind_back()` from C++23.

element_layout
constexpr auto Derived
constexpr auto Derived
constexpr Derived decltype(std::declval<D &>().empty())
constexpr Derived decltype(std::declval<D const &>().empty())
constexpr auto Derived element_layout Contiguity std::enable_if_t<C == element_layout::contiguous>
constexpr auto Derived element_layout Contiguity std::enable_if_t<C == element_layout::contiguous>
constexpr auto Derived
constexpr auto Derived
constexpr auto Derived
constexpr auto Derived
constexpr auto Derived std::enable_if_t< v1_dtl::decrementable_sentinel<D>::value && v1_dtl::common_range<D>::value>
constexpr auto Derived std::enable_if_t< v1_dtl::decrementable_sentinel<D>::value && v1_dtl::common_range<D>::value>
constexpr auto Derived `v1_dtl::range_difference_t< D >`
constexpr auto Derived `v1_dtl::range_difference_t< D >`
void element_layout ``view_interface`< D, Contiguity > const &`
constexpr auto `ViewInterface` `ViewInterface`

Implementation of `operator!=()` for all views derived from ``view_interface``.