9#include <dr/concepts/concepts.hpp>
10#include <dr/detail/ranges_shim.hpp>
14template <std::forward_iterator I>
16 using base = rng::subrange<I, I>;
20 requires std::default_initializable<I>
24 : base(first, last), rank_(rank) {}
26 template <rng::forward_range R>
28 : base(rng::begin(r), rng::end(r)), rank_(rank) {}
30 template <dr::remote_range R>
32 : base(rng::begin(r), rng::end(r)), rank_(dr::ranges::rank(r)) {}
34 constexpr std::size_t rank()
const noexcept {
return rank_; }
40template <rng::forward_range R>
43template <dr::remote_range R>
52inline constexpr bool rng::enable_borrowed_range<dr::remote_subrange<R>> =
true;
Definition: remote_subrange.hpp:15