Здравствуйте, c-smile, Вы писали:
CS>Пока получается как-то так:
CS>CS>int vmax_total = sequence.unzip([](const foo& el){return el.vmax}).accumulate(0);
CS>
CS>Возможно ли какое-нибудь достойное решение с использованием C++11 ?
Что ты хочешь, алгоритм уже записан оптимальным образом. Используя boost::range, unzip можно заменить на "| transformed", но это практически одно и тоже:
accumulate( sequence | transformed([](foo const & el) { return el.vmax; })
, 0);
С boost::lambda можно получить так:
accumulate(sequence | transformed(&_1 ->* &foo::vmax), 0)