7#include <dr/concepts/concepts.hpp>
8#include <dr/sp/span.hpp>
43template <
typename T,
typename Iter = T *>
49 using size_type = std::size_t;
50 using difference_type = std::size_t;
51 using reference = std::iter_reference_t<Iter>;
53 template <rng::random_access_range R>
57 rank_(dr::ranges::rank(r)) {}
59 template <rng::random_access_range R>
64 constexpr device_span(It first, std::size_t count, std::size_t rank)
67 template <
class It,
class End>
68 constexpr device_span(It first, End last, std::size_t rank)
71 constexpr std::size_t rank()
const noexcept {
return rank_; }
74 return device_span(this->begin(), this->begin() + n, rank_);
78 return device_span(this->end() - n, this->end(), rank_);
81 device_span subspan(std::size_t offset, std::size_t count)
const {
82 return device_span(this->begin() + offset, this->begin() + offset + count,
90template <rng::random_access_range R>
93template <rng::random_access_range R>
Definition: device_span.hpp:44
Definition: concepts.hpp:16