Distributed Ranges
Loading...
Searching...
No Matches
ranges_utils.hpp
1// SPDX-FileCopyrightText: Intel Corporation
2//
3// SPDX-License-Identifier: BSD-3-Clause
4
5#pragma once
6
7namespace dr::__detail {
8
9//
10// std::ranges::enumerate handles unbounded ranges and returns a range
11// where end() is a different type than begin(). Most of our code
12// assumes std::ranges::common_range. bounded_enumerate requires a
13// bounded range and returns a common_range.
14//
15template <typename R> auto bounded_enumerate(R &&r) {
16 auto size = rng::distance(r);
17 using W = std::uint32_t;
18 return rng::views::zip(rng::views::iota(W(0), W(size)), r);
19}
20
21} // namespace dr::__detail