Я хочу, чтобы вызвать функцию со следующей подписью:Функция объекта возвращения постоянного значения
void foreach(std::list<float>& floats, boost::function<float(float)> action);
Эта функция перебирает список и изменяет каждый элемент, выполнив new_value = action(old_value)
. Каков самый короткий способ предоставить такую функцию действия, которая возвращает всегда одно и то же значение поплавка. Я никогда не пробовал сам, но я предполагаю, что C++ 11 лямбды будет делать работу:
foreach(floats, [](float){ return 3.14; });
Что ближе альтернатива в C++ 03, предполагая, что я должен назвать свою функцию и не может использовать std::fill
? Есть ли уловка, чтобы избежать фактического объявления регулярной функции?
Почему не просто 'станд :: заливка (floats.begin(), floats.end(), 3,14)'? – Jon
См. Boost.Phoenix, особенно этот [один] (http://www.boost.org/doc/libs/1_54_0/libs/phoenix/doc/html/phoenix/starter_kit/values.html). – dkrikun
@dkrikun, похоже, что мне нужно! Вы хотите опубликовать его в качестве ответа, чтобы я мог его принять? – FireAphis