我怎样才能立即运行lambda?

Jen*_*273 5 c++ lambda c++11

如何立即运行lambda而不是存储它然后运行它?

而不是像这样存储lambda:

auto lambda = [&](){ std::cout << ++x << '\n'; }
Run Code Online (Sandbox Code Playgroud)

我试图像这样立即运行它:

[&](){ std::cout << ++x << '\n'; }
Run Code Online (Sandbox Code Playgroud)

但是这给了我这个错误信息:

Warning: expression result unused
Run Code Online (Sandbox Code Playgroud)

And*_* DM 11

您可以通过在末尾放置括号来立即调用lambda,如下所示:

int x = 0;
[&]{ std::cout << ++x << '\n'; }();
                             // ^^
Run Code Online (Sandbox Code Playgroud)

现在这将打印出来 1