Using `std::min` as an algorithm parameter
Wrap it in a lambda:
std::partial_sum(v.begin(), v.end(), v.begin(), [](auto& a, auto& b) {
return std::min(a, b);
});
You can initialise a pointer-to-function variable of appropriate type and pass that, or explicitly static_cast.
int& (*min)(int&, int&) = std::min<int>;
std::partial_sum(v.begin(), v.end(), v.begin(), min);