I have the following code (compiler: MSVC++ 10):
std::vector data; data.push_back(1.0f); data.push_back(1.0f); data.push_back(2.0f); // lambda
I think that the simplest way is to use std::accumulate:
std::accumulate
std::accumulate(data.begin(), data.end(), 0, [](int index, float const& value)->int{ ... return index + 1; });
This solution works with any container and it don't require a variable or custom classes.