这是什么语法:std :: thread t([&](){...});?

时间:2016-03-20 10:58:15

标签: c++

我正在阅读Facebook的Proxygen的源代码,我注意到了一些我以前从未见过的语法:

std::thread t([&] () {
    server.start();
});

来源:https://github.com/facebook/proxygen/blob/master/proxygen/httpserver/samples/push/PushServer.cpp

这是匿名方法吗?什么是&的价值,是线程吗?

看起来令人困惑,因为如果它是匿名方法,server如何可访问,是不是超出了范围?

1 个答案:

答案 0 :(得分:1)

你是对的,这段代码使用匿名函数。基本语法是:grunt build:app。那么[&]做的是

  

通过引用

捕获lambda体中使用的所有自动变量

您可以阅读更多here