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 = typedef decltype(std::begin(std::declval<R&>()))

◆ range_difference_t

template<typename R >
using ck::ranges::range_difference_t = typedef ck::iter_difference_t<ranges::iterator_t<R> >

◆ range_reference_t

template<typename R >
using ck::ranges::range_reference_t = typedef iter_reference_t<ranges::iterator_t<R> >

◆ range_size_t

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

◆ range_value_t

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

◆ sentinel_t

template<typename R >
using ck::ranges::sentinel_t = typedef 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 >
constexpr bool ck::ranges::is_range_v = is_range<T>::value
inlineconstexpr