Nedeni [&this]çalışmıyor çünkü bir sözdizimi hatası. İçindeki virgülle ayrılmış her parametre lambda-introducera capture:
capture:
identifier
& identifier
this
Buna &thissözdizimsel olarak izin verilmediğini görebilirsiniz . Buna izin verilmemesinin nedeni this, küçük bir const işaretçisi olduğundan asla referansla yakalamak istememenizdir . Bunu yalnızca değere göre geçirmek isteyeceksiniz - bu nedenle dil this, referansla yakalamayı desteklemiyor .
thisAçıkça yakalamak [this]için lambda-introducer.
İlki captureşu olabilir capture-default:
capture-default:
&
=
Bu, kullandığım her şeyi, referansla ( &) veya değere ( =) göre otomatik olarak yakalamak anlamına gelir - ancak bunun işlenmesi thisözeldir - her iki durumda da daha önce verilen nedenlerle değer tarafından yakalanır (varsayılan bir yakalamayla bile &, bu genellikle anlamına gelir) referansla yakalama).
5.1.2.7/8:
Ad arama (3.4) amaçları için, this(9.3.2) ' nin tipini ve değerini belirlemek ve statik olmayan sınıf üyelerine atıfta bulunan id-ifadelerini (*this)(9.3.1) kullanarak sınıf üyesi erişim ifadelerine dönüştürmek , bileşik-ifade [OF THE LAMBDA] lambda ifadesi bağlamında ele alınır.
Bu nedenle, üye adlarını kullanırken (örneğinizde adın kullanımı gibi) lambda, kaplayan üye işlevinin bir parçasıymış gibi davranır x, bu nedenle, thisbir üye işlevinin yaptığı gibi "örtük kullanımlar" üretecektir .
Bir lambda yakalama bir yakalama varsayılanı içeriyorsa, &yani lambda yakalamadaki tanımlayıcılardan önce gelmeyecektir &. Bir lambda yakalama, yakalama varsayılanı içeriyorsa, =lambda yakalama,
this ve her bir tanımlayıcıdan önce gelecektir &. Bir tanımlayıcı veya thisbir lambda yakalamada birden fazla görünmemelidir.
Eğer kullanabilirsiniz Yani [this], [&],[=] veya [&,this]bir şekilde lambda-introduceryakalamak için thisdeğerine göre işaretçi.
Ancak [&this]ve [=, this]biçimsizler. Geçen vaka gcc içinde forgivingly için uyarıyor [=,this]o explicit by-copy capture of ‘this’ redundant with by-copy capture defaultziyade hatalar.
thisdeğiştirilemez, bir referansı daha hızlı yapacak kadar büyük değildir ... ve her neyse , aslında mevcut değildir , bu yüzden vardır gerçek bir ömür yok, yani ona yapılan herhangi bir atıf, tanım gereği sallanıyor olacaktı.thisbir değerdir, bir değer değildir.