СК
Святослав Коротков

Передать функтор по ссылке в std::for_each

Код: http://pastebin.com/4tGQVdvT
В код можно особо не вникать.. .Вопрос такой, я создаю объект-функтор и передаю его третьим параметром в std::for_each. Он, естессно, передается по значению. Видимо, туплю к ночи, но не могу сообразить, как его по ссылке передать.

Попробовал его обхитрить так:
std::for_each (©[0], ©[1225], sum);
А по-правильному как надо поступать в таких ситуациях?

СЛ
Славик Лигай

Почему обхитрить? Если нужно, то можно.
Современные плюсы (С++11) предлагают менее извращенные решения, но можно и поизвращаться:

WeightedHand copy[10];
-----
float sum = 0;
struct Summarizer {
float *sum;
Summarizer(float *p): sum(p) {}
void operator () (const WeightedHand &v) { *sum += v.weight; };
} ssum(&sum);
std::for_each(copy, copy + 10, ssum);
-----
struct Summarizer {
float operator()(float result, WeightedHand &op) { return result + op.weight; }
} summarizer;
float sum = std::accumulate(copy, copy + 10, 0.0f, summarizer);
-----
C++11:
float sum = 0;
std::for_each(copy, copy + 10, [&sum](WeightedHand &e){ sum += e.weight; });
-----
float sum = 0;
for (auto e : copy) sum += e.weight;
-----
float sum = std::accumulate(begin(copy), end(copy), 0.0f, [](float r, WeightedHand &o) { return r + o.weight; });

Похожие вопросы
c++ std::ifstream причина ошибки...
DWORD в System::String^ или std::string в System::String^ (Visual C++)
[C++] std::string как скопировать одну строку в другую?
C++: как преобразовать LPTSTR в std::string??? Заранее спасибо
Подскажите где скачать шрифт adobe gothic std b-жирный (хангыль)...
C++ Как передать структуру в функцию по ссылке?
g++/gcc не компилируеткод: //main.cpp#include <iostream>int main(){ std::cout << "Hello, world!";}
как удалит ссылки переданных файлов в агенте ?
Как в С++ можно передать двумерный массив в функцию по ссылке? Запись типа f(&m) компьютер считает неправильной
#include #include #include using namespace std; int main =