-
Notifications
You must be signed in to change notification settings - Fork 75
Open
Description
While a boost::histogram
can be used as a range in C++20, an indexed(histogram)
cannot. At least for me (tested with clang++ 13 and g++ 11.3), the following code does not compile:
#include <random>
#include <ranges>
#include <iostream>
#include <boost/histogram.hpp>
int main() {
using namespace boost::histogram;
std::mt19937 rng;
std::exponential_distribution dist;
auto hist = make_histogram(axis::regular<>(20, 1, 10.0));
for (int i = 0; i < 1'000; ++i) {
hist(dist(rng));
}
// these work
auto r1 = std::ranges::subrange(hist.cbegin(), hist.cend());
auto v1 = hist | std::views::transform([] (auto&& x) {return 1;});
// these don't:
auto x = indexed(hist);
auto r2 = std::ranges::subrange(x.cbegin(), x.cend());
auto v2 = indexed(hist) | std::views::transform([] (auto&& x) {return 1;});
return 0;
}
Metadata
Metadata
Assignees
Labels
No labels