This question already has answers here:
What is a lambda expression in C++11?
                                
                                    (9个答案)
                                
                        
                                3年前关闭。
            
                    
我正在阅读来自Facebook Proxygen的源代码,并且注意到一些以前从未见过的语法:

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


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

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

看起来令人困惑,因为如果是匿名方法,server的访问方式是否超出范围?

最佳答案

没错,此代码使用匿名函数。基本语法为:[capture-list] (list-params) { function-body}。所以[&]做的是


  通过引用捕获在lambda主体中使用的所有自动变量


您可以阅读更多here

09-04 08:30