Dlaczego w tym przypadku Sum()
nie uruchamia konstruktora dla każdego elementu ?
Czy taka konstrukcja trochę nie jest myląca ?
#include <vector>
#include <iostream>
#include <algorithm>
int main()
{
struct Sum
{
Sum()
{
std::cout << "Sum::Sum()\n";
}
Sum(const Sum& a) : sum(a.sum) {
std::cout << "Sum::Sum(const Sum& a)\n";
}
void operator()(int n)
{
sum += n;
}
int sum {0};
};
std::vector<int> v {3, -4, 2, -8, 15, 267};
// invoke Sum::operator() for each element
Sum s = std::for_each(v.cbegin(), v.cend(), Sum());
std::cout << "sum:\t" << s.sum << '\n';
}