我需要在c ++ 98中重写c ++ 11代码,c ++ 11正在使用这个lambda函数
std::for_each(m_outputs.begin(), m_outputs.end(), [&](const Output & o)
{
     process(o)
}
使用仿函数是否容易编写完全相似的东西?
无论如何,似乎毫无意义地使用了lambda:
std::for_each(m_outputs.begin(), m_outputs.end(), &process);
也就是说,lambda只是一个带有的对象operator().您始终可以手动编写基础类型,并创建实例.Lambda保存了代码行,但并不神奇.
[编辑]因为我们已经知道问题是关于捕获,所以[&]通过引用捕获变量.这意味着将一个或多个引用变量添加到您正在编写的替换类型中.