OpenKalman
Classes | Typedefs | Variables
range-concepts.hpp File Reference
#include "basics/compatibility/language-features.hpp"
#include "basics/compatibility/iterator.hpp"
#include "range-access.hpp"
Include dependency graph for range-concepts.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  OpenKalman::ranges::detail::is_range< T, typename >
 
struct  OpenKalman::ranges::detail::is_range< T, std::void_t< iterator_t< T >, sentinel_t< T > > >
 
struct  OpenKalman::ranges::detail_borrowed_range::is_borrowed_range< R, typename >
 
struct  OpenKalman::ranges::detail_borrowed_range::is_borrowed_range< R, std::enable_if_t< range< R > and(std::is_lvalue_reference_v< R > or enable_borrowed_range< remove_cvref_t< R >>)> >
 
struct  OpenKalman::ranges::detail::is_sized_range< T, typename >
 
struct  OpenKalman::ranges::detail::is_sized_range< T, std::void_t< decltype(ranges::size(std::declval< T & >()))> >
 
struct  OpenKalman::ranges::detail::has_input_iterator< T, typename >
 
struct  OpenKalman::ranges::detail::has_input_iterator< T, std::enable_if_t< input_iterator< iterator_t< T > > > >
 
struct  OpenKalman::ranges::detail::has_output_iterator< R, T, typename >
 
struct  OpenKalman::ranges::detail::has_output_iterator< R, T, std::enable_if_t< output_iterator< iterator_t< R >, T > > >
 
struct  OpenKalman::ranges::detail::has_forward_iterator< T, typename >
 
struct  OpenKalman::ranges::detail::has_forward_iterator< T, std::enable_if_t< forward_iterator< iterator_t< T > > > >
 
struct  OpenKalman::ranges::detail::has_bidirectional_iterator< T, typename >
 
struct  OpenKalman::ranges::detail::has_bidirectional_iterator< T, std::enable_if_t< bidirectional_iterator< iterator_t< T > > > >
 
struct  OpenKalman::ranges::detail::has_random_access_iterator< T, typename >
 
struct  OpenKalman::ranges::detail::has_random_access_iterator< T, std::enable_if_t< random_access_iterator< iterator_t< T > > > >
 
struct  OpenKalman::ranges::detail::is_common_range< T, typename >
 
struct  OpenKalman::ranges::detail::is_common_range< T, std::enable_if_t< std::is_same_v< iterator_t< T >, sentinel_t< T > > > >
 

Typedefs

template<typename R , std::enable_if_t< sized_range< R >, int > = 0>
using OpenKalman::ranges::range_size_t = decltype(size(std::declval< R & >()))
 
template<typename R , std::enable_if_t< range< R >, int > = 0>
using OpenKalman::ranges::range_difference_t = iter_difference_t< iterator_t< R > >
 
template<typename R , std::enable_if_t< range< R >, int > = 0>
using OpenKalman::ranges::range_value_t = iter_value_t< iterator_t< R > >
 
template<typename R , std::enable_if_t< range< R >, int > = 0>
using OpenKalman::ranges::range_reference_t = iter_reference_t< iterator_t< R > >
 
template<typename R , std::enable_if_t< range< R >, int > = 0>
using OpenKalman::ranges::range_const_reference_t = iter_const_reference_t< iterator_t< R > >
 
template<typename R , std::enable_if_t< range< R >, int > = 0>
using OpenKalman::ranges::range_rvalue_reference_t = iter_rvalue_reference_t< iterator_t< R > >
 
template<typename R , std::enable_if_t< range< R >, int > = 0>
using OpenKalman::ranges::range_common_reference_t = iter_common_reference_t< iterator_t< R > >
 

Variables

template<typename T >
constexpr bool OpenKalman::ranges::range = detail::is_range<T>::value
 
template<typename T >
constexpr bool OpenKalman::ranges::borrowed_range = detail_borrowed_range::is_borrowed_range<T>::value
 
template<typename T >
constexpr bool OpenKalman::ranges::sized_range = range<T> and detail::is_sized_range<T>::value
 
template<typename T >
constexpr bool OpenKalman::ranges::input_range = range<T> and detail::has_input_iterator<T>::value
 
template<typename R , typename T >
constexpr bool OpenKalman::ranges::output_range = range<R> and detail::has_output_iterator<R, T>::value
 
template<typename T >
constexpr bool OpenKalman::ranges::forward_range = input_range<T> and detail::has_forward_iterator<T>::value
 
template<typename T >
constexpr bool OpenKalman::ranges::bidirectional_range = forward_range<T> and detail::has_bidirectional_iterator<T>::value
 
template<typename T >
constexpr bool OpenKalman::ranges::random_access_range = bidirectional_range<T> and detail::has_random_access_iterator<T>::value
 
template<typename T >
constexpr bool OpenKalman::ranges::common_range = range<T> and detail::is_common_range<T>::value