The following code example is taken from the book
C++20 - The Complete Guide
by Nicolai M. Josuttis,
Leanpub, 2021
The code is licensed under a
Creative Commons Attribution 4.0 International License.
// raw code
#include <ranges>
template<std::ranges::input_range Range>
std::ranges::range_value_t<Range> maxValue(Range&& rg)
{
if (std::ranges::empty(rg)) {
return std::ranges::range_value_t<Range>{};
}
auto pos = std::ranges::begin(rg);
auto max = *pos;
while (++pos != std::ranges::end(rg)) {
if (*pos > max) {
max = *pos;
}
}
return max;
}