You must log in or register to comment.
In C++23, you can zip the two arrays, so there’s no need to declare an otherwise useless index variable:
int stdSumOfValidDataPoints(const MyData& data) { using namespace std; auto&& r = ranges::views::zip_transform( [](int data, bool valid){return data * valid;}, data.dataPoint, data.dataPointIsValid ); return accumulate(begin(r), end(r), 0); }
Unfortunately, the current implementation of zip_transform in GCC doesn’t understand that the output length is constant 8, so it does needless cmps every iteration to check if it should stop iterating. (Godbolt)