The following code example is taken from the book
C++23 - The Complete Guide
by Nicolai M. Josuttis,
Leanpub, 2026
The code is licensed under a
Creative Commons Attribution 4.0 International License.
// raw code
#include <print>
#include <vector>
#include <algorithm>
int main()
{
// traced plus operator:
auto plusTraced = [] (auto val1, auto val2) {
auto sum = val1 + val2;
std::println(" {} + {} => {}", val1, val2, sum);
return sum;
};
std::vector coll{1, 2, 3, 4};
std::println("coll: {}", coll);
// compute (((0 + E1) + E2) + E3) + ... :
auto sum1 = std::ranges::fold_left(coll, 0, plusTraced);
std::println("sum left: {}", sum1);
// compute ... + (En-2 + (En-1 + (En + 0))) :
auto sum2 = std::ranges::fold_right(coll, 0, plusTraced);
std::println("sum right: {}", sum2);
}