Lambda c 11 değişkenleri yakalamak onlar't kullanma? | Netgez.com
SORU
30 Mayıs 2011, PAZARTESİ


Lambda c 11 deÄŸiÅŸkenleri yakalamak onlar't kullanma?

[=] Tüm yerel değişkenler bir lambda değeri tarafından yakalandı olmak istiyorum belirtmek için kullanıyorum, bu neden olurtümişlevi kopyalanan yerel değişkenler, ya da sadece tüm yerel değişkenlerbu lambda tarafından kullanılır?

Bu yüzden, örneğin, eğer:

vector<int> my_huge_vector(100000);
int my_measly_int;
some_function([=](int i){ return my_measly_int   i; });

My_huge_vector lambda onu kullanmıyorum bile kopyalanır?

CEVAP
30 Mayıs 2011, PAZARTESİ


Her değişken açıkça yakalama listesinde adı yakalanır. Varsayılan yakalama sadece (a) değil açıkça yakalama listesinde adı ve (b) de değişkenler ele geçirecekkullanılırlambda ifade gövdesi. Bir değişken açıkça adlandırılmış ve lambda ifadesi içinde değişken kullanmak istemiyorsanız, o zaman değişken yakalanır. , my_huge_vector örnek yakalanır.

Başına C 11 §5.1.2[ifade.prim.lambda] 11/:

Bir eğerlambda ifadebir ilişkili vardıryakalama-varsayılanve onunbileşik deyimDDR-kullanırthis veya otomatik depolama süresi ile bir değişken veDDR-kullanılırvarlık açıkça yakalanan, daha sonra değilDDR-kullanılırvarlık örtülü olarak çekilecek dedi.

Lambda ifade etti ilişkili yakalama varsayılan: varsayılan değer [=] kullanarak değişkenleri yakalamak.

Eğer bir değişken kullanılıyorsa, (terimin Bir Tanımı Kural anlamında"") kullanılan bir değişken örtülü olarak yakalanır. my_huge_vector tüm vücutta kullanmayın beri ("") bileşik deyim lambda ifade, örtülü olarak yakalanan değildir.

§5.1.2/14 ile devam edin

Bir varlığın kopyasını tarafından yakalanır

  • örtülü olarak alınmışyakalama-varsayılan= ya olursa
  • açıkça & içermeyen bir yakalama ile yakalandı.

my_huge_vector örtülü olarak yakalanır ve açıkça yakalanan olmadığından, başvuru kopyalama veya esir değil.

Bunu PaylaÅŸ:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VÄ°DEO

Rastgele Yazarlar

  • BSA

    BSA

    9 NÄ°SAN 2012
  • Kiddyzuzaa

    Kiddyzuzaa

    25 ÅžUBAT 2014
  • Rozetked | Обзоры

    Rozetked | Ð

    5 AÄžUSTOS 2011