如何立即运行lambda?

如何立即运行lambda?

问题描述:

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

不是存储这样的拉姆达:

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

我想立即运行是这样的:

[&](){ std::cout << ++x << '\n'; } 

但是,这给了我这个错误消息:

Warning: expression result unused 
+0

...但是为什么呢? [](http://*.com) – Eric

+3

@Eric:它对初始化静态变量很有用。 –

+0

@ BenjaminLindley:好点。我已经看到它在JavaScript中使用了很多,但是我认为这只是由于缺少区块范围。这是在C++中这样做的一个很好的理由 – Eric

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

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

现在,这将打印出1