Original Post
I am working through Nicolai Josuttis' book on the C++ Standard Library, and am attempting to implement a simple functor. I have:
template<class T>
class Sum
{
public:
Sum() : sum(0)
{}
void operator()(const T & elem)
{ sum+=elem; }
T sum;
};
int main()
{
std::vector<int> coll;
for(int i=0; i<5; ++i)
coll.push_back(i);
Sum<int> sum;
for(std::vector<int>::const_iterator ci = coll.begin(); ci != coll.end(); ++ci)
sum(*ci);
std::cout << sum.sum << std::endl;
return 0;
}
Does anyone know why this works, but replacing the for loop with:
std::for_each(coll.begin(), coll.end(), sum);
means that the result is zero every time?