scnlib  0.2.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
ranges.h File Reference
#include "string_view.h"
#include <iterator>

Go to the source code of this file.

Classes

struct  scn::detail::ranges::iterator_category< T >
 
struct  scn::detail::ranges::_iterator_category< T, typename >
 
struct  scn::detail::ranges::_iterator_category< T * >
 
struct  scn::detail::ranges::_iterator_category< const T >
 
struct  scn::detail::ranges::_iterator_category< T, void_t< typename T::iterator_category > >
 
struct  scn::detail::ranges::iterator_category< T >
 
struct  scn::detail::ranges::incrementable_traits< typename >
 
struct  scn::detail::ranges::_empty
 
struct  scn::detail::ranges::_with_difference_type< T >
 
struct  scn::detail::ranges::_incrementable_traits_helper< typename, typename >
 
struct  scn::detail::ranges::_incrementable_traits_helper< void * >
 
struct  scn::detail::ranges::_incrementable_traits_helper< T * >
 
struct  scn::detail::ranges::_incrementable_traits_helper< const I >
 
struct  scn::detail::ranges::_has_member_difference_type< typename, typename >
 
struct  scn::detail::ranges::_has_member_difference_type< T, void_t< typename T::difference_type > >
 
struct  scn::detail::ranges::_incrementable_traits_helper< T, typename std::enable_if< _has_member_difference_type< T >::value >::type >
 
struct  scn::detail::ranges::_incrementable_traits_helper< T, typename std::enable_if< !std::is_pointer< T >::value &&!_has_member_difference_type< T >::value &&std::is_integral< decltype(std::declval< const T & >()-std::declval< const T & >())>::value >::type >
 
struct  scn::detail::ranges::incrementable_traits< typename >
 
struct  scn::detail::ranges::readable_traits< typename >
 
struct  scn::detail::ranges::_with_value_type< T >
 
struct  scn::detail::ranges::_readable_traits_helper< typename, typename >
 
struct  scn::detail::ranges::_readable_traits_helper< T * >
 
struct  scn::detail::ranges::_readable_traits_helper< I, typename std::enable_if< std::is_array< I >::value >::type >
 
struct  scn::detail::ranges::_readable_traits_helper< const I, typename std::enable_if<!std::is_array< I >::value >::type >
 
struct  scn::detail::ranges::_member_value_type< T, V >
 
struct  scn::detail::ranges::_member_element_type< T, E >
 
struct  scn::detail::ranges::_has_member_value_type< T >
 
struct  scn::detail::ranges::_has_member_element_type< T >
 
struct  scn::detail::ranges::_readable_traits_helper< T, typename std::enable_if< _has_member_value_type< T >::value &&!_has_member_element_type< T >::value >::type >
 
struct  scn::detail::ranges::_readable_traits_helper< T, typename std::enable_if< _has_member_element_type< T >::value &&!_has_member_value_type< T >::value >::type >
 
struct  scn::detail::ranges::_readable_traits_helper< T, typename std::enable_if< _has_member_element_type< T >::value &&_has_member_value_type< T >::value >::type >
 
struct  scn::detail::ranges::readable_traits< typename >
 
struct  scn::detail::ranges::_sentinel_for_concept
 
struct  scn::detail::ranges::sentinel_for< S, I >
 
struct  scn::detail::ranges::_sized_sentinel_for_concept
 
struct  scn::detail::ranges::sized_sentinel_for< S, I >
 
struct  scn::detail::ranges::sized_sentinel_for< S, void * >
 
struct  scn::detail::ranges::sized_sentinel_for< void *, I >
 
struct  scn::detail::ranges::sized_sentinel_for< void *, void * >
 
struct  scn::detail::ranges::_begin::fn
 
struct  scn::detail::ranges::_end::fn
 
struct  scn::detail::ranges::_cbegin::fn
 
struct  scn::detail::ranges::_cend::fn
 
struct  scn::detail::ranges::_range_impl_concept
 
struct  scn::detail::ranges::_range_impl< T >
 
struct  scn::detail::ranges::_range_concept
 
struct  scn::detail::ranges::range< T >
 
struct  scn::detail::ranges::forwarding_range< T >
 
struct  scn::detail::ranges::view_base
 
struct  scn::detail::ranges::_is_std_non_view< typename >
 
struct  scn::detail::ranges::_is_std_non_view< std::initializer_list< T > >
 
struct  scn::detail::ranges::_enable_view_helper< T >
 
struct  scn::detail::ranges::view< T >
 
struct  scn::detail::ranges::_is_object_pointer< P >
 
struct  scn::detail::ranges::_data::fn
 
struct  scn::detail::ranges::disable_sized_range< typename >
 
struct  scn::detail::ranges::_size::fn
 
struct  scn::detail::ranges::_empty_ns::fn
 
struct  scn::detail::ranges::_sized_range_concept
 
struct  scn::detail::ranges::sized_range< T >
 
struct  scn::detail::ranges::_contiguous_range_concept
 
struct  scn::detail::ranges::contiguous_range< T >
 
class  scn::detail::ranges::view_interface< D >
 
struct  scn::detail::ranges::_default_subrange_kind< I, S >
 
class  scn::detail::ranges::_subrange::subrange< I, S, subrange_kind >
 
struct  scn::detail::ranges::_pair_like_concept
 
struct  scn::detail::ranges::_pair_like< T >
 
struct  scn::detail::ranges::_pair_like_convertible_to_concept
 
struct  scn::detail::ranges::_pair_like_convertible_to< T, U, V >
 
struct  scn::detail::ranges::_pair_like_convertible_from< T, U, V >
 
struct  scn::detail::ranges::_iterator_sentinel_pair_concept
 
struct  scn::detail::ranges::_iterator_sentinel_pair< T >
 
struct  scn::detail::ranges::_subrange_data< I, S, StoreSize >
 
struct  scn::detail::ranges::_subrange_data< I, S, true >
 
struct  scn::detail::ranges::_subrange_range_constructor_constraint_helper< R, I, S, K >
 
struct  scn::detail::ranges::_not_same_as< T, U >
 
class  scn::detail::ranges::_subrange::subrange< I, S, subrange_kind >
 
struct  scn::detail::ranges::_subrange_get_impl< N >
 
struct  scn::detail::ranges::_subrange_get_impl< 0 >
 
struct  scn::detail::ranges::_subrange_get_impl< 1 >
 
struct  scn::detail::ranges::pair_reconstructible_range< R >
 
struct  scn::detail::ranges::reconstructible_range< R >
 
struct  scn::detail::ranges::_bidirectional_iterator_concept
 
struct  scn::detail::ranges::bidirectional_iterator< I >
 
struct  scn::detail::ranges::_random_access_iterator_concept
 
struct  scn::detail::ranges::random_access_iterator< I >
 
struct  scn::detail::ranges::_advance::fn
 
struct  scn::detail::ranges::_distance::fn
 
class  std::tuple_size<::scn::detail::ranges::subrange< I, S, K > >
 
class  std::tuple_element< 0,::scn::detail::ranges::subrange< I, S, K > >
 
class  std::tuple_element< 1,::scn::detail::ranges::subrange< I, S, K > >
 

Namespaces

 scn
 
 scn::detail
 
 scn::detail::ranges
 
 scn::detail::ranges::_begin
 
 scn::detail::ranges::_end
 
 scn::detail::ranges::_cbegin
 
 scn::detail::ranges::_cend
 
 scn::detail::ranges::_data
 
 scn::detail::ranges::_size
 
 scn::detail::ranges::_empty_ns
 
 scn::detail::ranges::_subrange
 
 scn::detail::ranges::_advance
 
 scn::detail::ranges::_distance
 
 std
 

Typedefs

template<typename T >
using scn::detail::ranges::iterator_category_t = typename iterator_category< T >::type
 
template<typename T >
using scn::detail::ranges::iter_reference_t = decltype(*std::declval< T & >())
 
template<typename T >
using scn::detail::ranges::iter_difference_t = typename incrementable_traits< T >::difference_type
 
template<typename T >
using scn::detail::ranges::_member_value_type_t = typename T::value_type
 
template<typename T >
using scn::detail::ranges::_member_element_type_t = typename T::element_type
 
template<typename T >
using scn::detail::ranges::iter_value_t = typename readable_traits< T >::value_type
 
template<typename R >
using scn::detail::ranges::iterator_t = typename std::enable_if< range< R >::value, decltype(::scn::detail::ranges::begin(std::declval< R & >()))>::type
 
template<typename R >
using scn::detail::ranges::sentinel_t = typename std::enable_if< range< R >::value, decltype(::scn::detail::ranges::end(std::declval< R & >()))>::type
 
template<typename R >
using scn::detail::ranges::range_difference_t = typename std::enable_if< range< R >::value, iter_difference_t< iterator_t< R >>>::type
 
template<typename R >
using scn::detail::ranges::range_value_t = typename std::enable_if< range< R >::value, iter_value_t< iterator_t< R >>>::type
 
template<typename R >
using scn::detail::ranges::range_reference_t = typename std::enable_if< range< R >::value, iter_reference_t< iterator_t< R >>>::type
 

Enumerations

enum  scn::detail::ranges::subrange_kind : bool { scn::detail::ranges::subrange_kind::unsized, scn::detail::ranges::subrange_kind::sized }
 

Functions

template<typename T >
void scn::detail::ranges::_begin::begin (T &&)=delete
 
template<typename T >
void scn::detail::ranges::_begin::begin (std::initializer_list< T > &&)=delete
 
template<typename T >
void scn::detail::ranges::_end::end (T &&)=delete
 
template<typename T >
void scn::detail::ranges::_end::end (std::initializer_list< T > &&)=delete
 
template<typename T >
void scn::detail::ranges::_size::size (T &&)=delete
 
template<typename T >
void scn::detail::ranges::_size::size (T &)=delete
 
template<typename R , typename I , typename S , subrange_kind K>
auto scn::detail::ranges::_subrange_range_constructor_constraint_helper_fn (long) -> std::false_type
 
template<typename R , typename I , typename S , subrange_kind K>
auto scn::detail::ranges::_subrange_range_constructor_constraint_helper_fn (int) -> typename std::enable_if< forwarding_range< R >::value &&std::is_convertible< iterator_t< R >, I >::value &&std::is_convertible< sentinel_t< R >, S >::value, std::true_type >::type
 
template<typename R >
constexpr subrange_kind scn::detail::ranges::_subrange_deduction_guide_helper ()
 
template<typename I , typename S , subrange_kind K>
scn::detail::ranges::_subrange::begin (subrange< I, S, K > &&r) noexcept
 
template<typename I , typename S , subrange_kind K>
scn::detail::ranges::_subrange::end (subrange< I, S, K > &&r) noexcept
 
template<std::size_t N, typename I , typename S , subrange_kind K>
auto scn::detail::ranges::get (const subrange< I, S, K > &s) -> decltype(_subrange_get_impl< N >::get(s))