ranges Namespace Reference

ranges Namespace Reference#

Composable Kernel: ck::ranges Namespace Reference
ck::ranges Namespace Reference

Classes

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

Typedefs

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

Functions

template<typename InputRange, typename OutputIterator>
auto copy (InputRange &&range, OutputIterator iter) -> decltype(std::copy(std::begin(std::forward< InputRange >(range)), std::end(std::forward< InputRange >(range)), iter))
template<typename T, typename OutputRange>
auto fill (OutputRange &&range, const T &init) -> std::void_t< decltype(std::fill(std::begin(std::forward< OutputRange >(range)), std::end(std::forward< OutputRange >(range)), init))>
template<typename InputRange, typename OutputIterator, typename UnaryOperation>
auto transform (InputRange &&range, OutputIterator iter, UnaryOperation unary_op) -> decltype(std::transform(std::begin(range), std::end(range), iter, unary_op))

Variables

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

Typedef Documentation

◆ iterator_t

template<typename R>
using ck::ranges::iterator_t = decltype(std::begin(std::declval<R&>()))

◆ range_difference_t

◆ range_reference_t

◆ range_size_t

template<typename R>
using ck::ranges::range_size_t = decltype(std::size(std::declval<R&>()))

◆ range_value_t

template<typename R>
using ck::ranges::range_value_t = iter_value_t<ranges::iterator_t<R>>

◆ sentinel_t

template<typename R>
using ck::ranges::sentinel_t = decltype(std::end(std::declval<R&>()))

Function Documentation

◆ copy()

template<typename InputRange, typename OutputIterator>
auto ck::ranges::copy ( InputRange && range,
OutputIterator iter )->decltype(std::copy(std::begin(std::forward< InputRange >(range)), std::end(std::forward< InputRange >(range)), iter))

◆ fill()

template<typename T, typename OutputRange>
auto ck::ranges::fill ( OutputRange && range,
const T & init )->std::void_t< decltype(std::fill(std::begin(std::forward< OutputRange >(range)), std::end(std::forward< OutputRange >(range)), init))>

◆ transform()

template<typename InputRange, typename OutputIterator, typename UnaryOperation>
auto ck::ranges::transform ( InputRange && range,
OutputIterator iter,
UnaryOperation unary_op )->decltype(std::transform(std::begin(range), std::end(range), iter, unary_op))

Variable Documentation

◆ is_range_v

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