如何立即运行lambda?
问题描述:
如何立即运行lambda而不是存储它然后运行它?如何立即运行lambda?
不是存储这样的拉姆达:
auto lambda = [&](){ std::cout << ++x << '\n'; }
我想立即运行是这样的:
[&](){ std::cout << ++x << '\n'; }
但是,这给了我这个错误消息:
Warning: expression result unused
答
您可以通过在末尾放置圆括号来立即调用lambda,如下所示:
int x = 0;
[&]{ std::cout << ++x << '\n'; }();
// ^^
现在,这将打印出1
...但是为什么呢? [](http://*.com) – Eric
@Eric:它对初始化静态变量很有用。 –
@ BenjaminLindley:好点。我已经看到它在JavaScript中使用了很多,但是我认为这只是由于缺少区块范围。这是在C++中这样做的一个很好的理由 – Eric