mi chiedo perché =
modalità cattura-default vieta this
in cattura-list di C++ un'espressione lambda.restrizione sulla modalità di acquisizione predefinita e 'questo' in C++ lambda-espressione
Cioè,
[=, this]{ }; // error
[&, this]{ }; // OK
viene specificato dal C++ 11 5.1.2/8.
- Se un lambda-acquisizione include una cattura-default che è &, i identificatori della lambda-capture non è preceduta da &.
- Se un'acquisizione lambda include un'acquisizione-default =, la lambda-capture non deve contenere questo e ogni identificatore che contiene deve essere preceduto da &.
D: C'è qualche motivo o storia di fondo per questa regola?
non è 'this' implicitamente catturati in ogni caso quando la cattura-default è '='? – Benj
@Benj Sì, 'this' è implicitamente catturato con' = 'e' & 'capture-default. – yohjp
Mi chiedo se "questo" sia in realtà sempre catturato dal riferimento indipendentemente dal valore predefinito. – Benj