次のシグネチャで関数を呼び出したい:
void foreach(std::list<float>& floats, boost::function<float(float)> action);
この関数はリストを反復し、 を実行して各要素を変更しますnew_value = action(old_value)
。常に同じ float 値を返すようなアクション関数を提供する最短の方法は何ですか? 私は自分で試したことはありませんが、C++11 ラムダでうまくいくと思います。
foreach(floats, [](float){ return 3.14; });
関数を呼び出す必要があり、使用できないと仮定すると、C++03 で最も近い代替手段は何std::fill
ですか? 実際に通常の関数を宣言することを避けるためのトリックはありますか?