this
Bir lambdadaki yakalamanın onu açıkça kullandığını bulduğum örnekler ; Örneğin:
capturecomplete = [this](){this->calstage1done();};
Ancak örtük olarak kullanmak da mümkün görünüyor; Örneğin:
capturecomplete = [this](){calstage1done();};
Bunu g ++ 'da test ettim ve derledi.
Bu standart C ++ mı? (ve öyleyse, hangi sürüm) veya bir çeşit uzantı mıdır?
Bunu bir şekilde görebiliyorum, ama aynı zamanda basit bir görev olması gereken şey için korkunç bir ayrıntı gibi görünüyor.
—
plugwash
MSVC'yi (belki de sadece 2015) de
—
lambdada
this
bir
@plugwash: Geliştiriciler her zaman tembel olma eğilimindedir ve işleri en aza indirgemek ister ve dil tasarımcıları da farklı değildir. Bununla birlikte, belirsizliği çözmek için genellikle ayrıntı düzeyi gereklidir ve burada durum böyledir.
—
flater
this->
açıkça kullanılmasının olası bir nedeni vardır , bu da açıkça yakalanan değerlerin açıkça kullanılmasını sağlamaktır. Bunun[](){ calstage1done(); }
yasalthis
olmayacağını , çünkü yakalanmayacağını unutmayın; çekerken fakatthis
açıkça fonksiyon vücut için, bu şaşırtıcı görünebilir aslında yakalanan değeri kullanmak değil bir bakışta:[this](){ calstage1done(); }
.