2016-03-20 12 views
0

Ben Facebook'un Proxygen kaynak kodu ile okuyordu ve ben daha önce hiç görmediğim bazı sözdizimi fark:Hangi sözdizimi şudur: std :: thread t ([&]() {...}) ;?

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

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

bir anonim yöntem var mı? Ve &'un değeri nedir, iş parçacığı mı?

Kafa karıştırıcı görünüyor çünkü anonim bir yöntemse, server erişilebilir, kapsam dışı mı?

+1

daha okuyabilir yakalar olduğunu. '[&]' Geçerli kapsamdaki değişkenlerin referans olarak (bu durumda 'sunucu') yakalandığı anlamına gelir. –

+0

Bir * lambda işlevi *. http://en.cppreference.com/w/cpp/language/lambda – Galik

+0

Teşekkürler çocuklar. Cevap ver ve kabul edeceğim. – BugHunterUK

cevap

1

Haklısınız, bu kod anonim işlev kullanıyor. Temel sözdizimi şöyledir: [capture-list] (list-params) { function-body}. Peki [&] yapar

referans

tarafından lambda gövdesinde kullanılan ODR-tüm otomatik değişkenler Sen Bir lambda var here

İlgili konular