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>

Go to the source code of this file.

Classes

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

Namespaces

namespace  ck_tile
namespace  ck_tile::ranges

Typedefs

template<typename T>
using ck_tile::iter_value_t = typename std::iterator_traits<remove_cvref_t<T>>::value_type
template<typename T>
using ck_tile::iter_reference_t = decltype(*std::declval<T&>())
template<typename T>
using ck_tile::iter_difference_t = typename std::iterator_traits<remove_cvref_t<T>>::difference_type
template<typename R>
using ck_tile::ranges::iterator_t = decltype(std::begin(std::declval<R&>()))
template<typename R>
using ck_tile::ranges::sentinel_t = decltype(std::end(std::declval<R&>()))
template<typename R>
using ck_tile::ranges::range_size_t = decltype(std::size(std::declval<R&>()))
template<typename R>
using ck_tile::ranges::range_difference_t = ck_tile::iter_difference_t<ranges::iterator_t<R>>
template<typename R>
using ck_tile::ranges::range_value_t = iter_value_t<ranges::iterator_t<R>>
template<typename R>
using ck_tile::ranges::range_reference_t = iter_reference_t<ranges::iterator_t<R>>

Variables

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