ranges.hpp File Reference

ranges.hpp File Reference#

Composable Kernel: ranges.hpp File Reference
ranges.hpp File Reference
#include <iterator>
#include <type_traits>
#include <utility>
#include "ck/library/utility/iterator.hpp"

Go to the source code of this file.

Classes

struct  ck::ranges::is_range< T, typename >
struct  ck::ranges::is_range< T, std::void_t< decltype(std::begin(std::declval< T & >())), decltype(std::end(std::declval< T & >()))> >
struct  ck::ranges::is_sized_range< T, typename >
struct  ck::ranges::is_sized_range< T, std::void_t< decltype(std::size(std::declval< T & >()))> >

Namespaces

namespace  ck
namespace  ck::ranges

Typedefs

template<typename R>
using ck::ranges::iterator_t = decltype(std::begin(std::declval<R&>()))
template<typename R>
using ck::ranges::sentinel_t = decltype(std::end(std::declval<R&>()))
template<typename R>
using ck::ranges::range_size_t = decltype(std::size(std::declval<R&>()))
template<typename R>
using ck::ranges::range_difference_t = ck::iter_difference_t<ranges::iterator_t<R>>
template<typename R>
using ck::ranges::range_value_t = iter_value_t<ranges::iterator_t<R>>
template<typename R>
using ck::ranges::range_reference_t = iter_reference_t<ranges::iterator_t<R>>

Variables

template<typename T>
constexpr bool ck::ranges::is_range_v = is_range<T>::value