2016-05-14 69 views
4

如何立即運行lambda而不是存儲它然後運行它?如何立即運行lambda?

不是存儲這樣的拉姆達:

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

我想立即運行是這樣的:

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

但是,這給了我這個錯誤消息:

Warning: expression result unused 
+0

...但是爲什麼呢? [](http://stackoverflow.com) – Eric

+3

@Eric:它對初始化靜態變量很有用。 –

+0

@ BenjaminLindley:好點。我已經看到它在JavaScript中使用了很多,但是我認爲這只是由於缺少區塊範圍。這是在C++中這樣做的一個很好的理由 – Eric

回答

10

您可以通過在末尾放置圓括號來立即調用lambda,如下所示:

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

現在,這將打印出1