scnlib  0.2.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
scn::detail::ranges Namespace Reference

Namespaces

 _advance
 
 _begin
 
 _cbegin
 
 _cend
 
 _data
 
 _distance
 
 _empty_ns
 
 _end
 
 _size
 
 _subrange
 

Classes

struct  iterator_category
 
struct  _iterator_category
 
struct  _iterator_category< T * >
 
struct  _iterator_category< const T >
 
struct  _iterator_category< T, void_t< typename T::iterator_category > >
 
struct  incrementable_traits
 
struct  _empty
 
struct  _with_difference_type
 
struct  _incrementable_traits_helper
 
struct  _incrementable_traits_helper< void * >
 
struct  _incrementable_traits_helper< T * >
 
struct  _incrementable_traits_helper< const I >
 
struct  _has_member_difference_type
 
struct  _has_member_difference_type< T, void_t< typename T::difference_type > >
 
struct  _incrementable_traits_helper< T, typename std::enable_if< _has_member_difference_type< T >::value >::type >
 
struct  _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  readable_traits
 
struct  _with_value_type
 
struct  _readable_traits_helper
 
struct  _readable_traits_helper< T * >
 
struct  _readable_traits_helper< I, typename std::enable_if< std::is_array< I >::value >::type >
 
struct  _readable_traits_helper< const I, typename std::enable_if<!std::is_array< I >::value >::type >
 
struct  _member_value_type
 
struct  _member_element_type
 
struct  _has_member_value_type
 
struct  _has_member_element_type
 
struct  _readable_traits_helper< T, typename std::enable_if< _has_member_value_type< T >::value &&!_has_member_element_type< T >::value >::type >
 
struct  _readable_traits_helper< T, typename std::enable_if< _has_member_element_type< T >::value &&!_has_member_value_type< T >::value >::type >
 
struct  _readable_traits_helper< T, typename std::enable_if< _has_member_element_type< T >::value &&_has_member_value_type< T >::value >::type >
 
struct  _sentinel_for_concept
 
struct  sentinel_for
 
struct  _sized_sentinel_for_concept
 
struct  sized_sentinel_for
 
struct  sized_sentinel_for< S, void * >
 
struct  sized_sentinel_for< void *, I >
 
struct  sized_sentinel_for< void *, void * >
 
struct  _range_impl_concept
 
struct  _range_impl
 
struct  _range_concept
 
struct  range
 
struct  forwarding_range
 
struct  view_base
 
struct  _is_std_non_view
 
struct  _is_std_non_view< std::initializer_list< T > >
 
struct  _enable_view_helper
 
struct  view
 
struct  _is_object_pointer
 
struct  disable_sized_range
 
struct  _sized_range_concept
 
struct  sized_range
 
struct  _contiguous_range_concept
 
struct  contiguous_range
 
class  view_interface
 
struct  _default_subrange_kind
 
struct  _pair_like_concept
 
struct  _pair_like
 
struct  _pair_like_convertible_to_concept
 
struct  _pair_like_convertible_to
 
struct  _pair_like_convertible_from
 
struct  _iterator_sentinel_pair_concept
 
struct  _iterator_sentinel_pair
 
struct  _subrange_data
 
struct  _subrange_data< I, S, true >
 
struct  _subrange_range_constructor_constraint_helper
 
struct  _not_same_as
 
struct  _subrange_get_impl
 
struct  _subrange_get_impl< 0 >
 
struct  _subrange_get_impl< 1 >
 
struct  pair_reconstructible_range
 
struct  reconstructible_range
 
struct  _bidirectional_iterator_concept
 
struct  bidirectional_iterator
 
struct  _random_access_iterator_concept
 
struct  random_access_iterator
 
struct  contiguous_iterator_tag
 

Typedefs

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

Enumerations

enum  subrange_kind : bool { subrange_kind::unsized, subrange_kind::sized }
 

Functions

template<typename R , typename I , typename S , subrange_kind K>
auto _subrange_range_constructor_constraint_helper_fn (long) -> std::false_type
 
template<typename R , typename I , typename S , subrange_kind K>
auto _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 _subrange_deduction_guide_helper ()
 
template<std::size_t N, typename I , typename S , subrange_kind K>
auto get (const subrange< I, S, K > &s) -> decltype(_subrange_get_impl< N >::get(s))
 

Typedef Documentation

template<typename T >
using scn::detail::ranges::_member_element_type_t = typedef typename T::element_type

Definition at line 189 of file ranges.h.

template<typename T >
using scn::detail::ranges::_member_value_type_t = typedef typename T::value_type

Definition at line 182 of file ranges.h.

template<typename T >
using scn::detail::ranges::iter_difference_t = typedef typename incrementable_traits<T>::difference_type

Definition at line 130 of file ranges.h.

template<typename T >
using scn::detail::ranges::iter_reference_t = typedef decltype(*std::declval<T&>())

Definition at line 65 of file ranges.h.

template<typename T >
using scn::detail::ranges::iter_value_t = typedef typename readable_traits<T>::value_type

Definition at line 227 of file ranges.h.

template<typename T >
using scn::detail::ranges::iterator_category_t = typedef typename iterator_category<T>::type

Definition at line 62 of file ranges.h.

template<typename R >
using scn::detail::ranges::iterator_t = typedef typename std::enable_if<range<R>::value, decltype(::scn::detail::ranges::begin( std::declval<R&>()))>::type

Definition at line 491 of file ranges.h.

template<typename R >
using scn::detail::ranges::range_difference_t = typedef typename std::enable_if<range<R>::value, iter_difference_t<iterator_t<R>>>::type

Definition at line 500 of file ranges.h.

template<typename R >
using scn::detail::ranges::range_reference_t = typedef typename std::enable_if<range<R>::value, iter_reference_t<iterator_t<R>>>::type

Definition at line 508 of file ranges.h.

template<typename R >
using scn::detail::ranges::range_value_t = typedef typename std::enable_if<range<R>::value, iter_value_t<iterator_t<R>>>::type

Definition at line 504 of file ranges.h.

template<typename R >
using scn::detail::ranges::sentinel_t = typedef typename std::enable_if<range<R>::value, decltype(::scn::detail::ranges::end( std::declval<R&>()))>::type

Definition at line 496 of file ranges.h.

Enumeration Type Documentation

Enumerator
unsized 
sized 

Definition at line 901 of file ranges.h.

Function Documentation

template<typename R >
constexpr subrange_kind scn::detail::ranges::_subrange_deduction_guide_helper ( )

Definition at line 1069 of file ranges.h.

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<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))

Definition at line 1185 of file ranges.h.