我需要在 c++98 中重写 c++11 代码,c++11 使用 lambda 函数 [&](const Output & o

I need to rewrite c++ 11 code in c++98, c++ 11 is using lambda function [&](const Output & o

我需要将此 c++98 代码片段迁移到 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 的保存代码行,但不是魔法。

[编辑] 因为我们知道这个问题是关于捕获的,所以 [&] 通过引用捕获变量。这意味着向您正在编写的替换类型添加一个或多个引用变量。

请注意,这里不需要实际使用 std 算法和仿函数。假设TheTypem_outputs.begin()returns的类型,你可以很容易的改写代码如下:

for (
  TheType it = m_outputs.begin(), itEnd = m_outputs.end();
  it != itEnd;
  ++it
) {
  process(*it);
}