ograniczenie dotyczące domyślnego trybu przechwytywania i „this” w wyrażeniu lambda w C ++
Zastanawiam się dlaczego=
przechwytywanie domyślne tryb zabraniathis
wlista przechwytywania C ++wyrażenie lambda.
To jest,
[=, this]{ }; // error
[&, this]{ }; // OK
Jest to określone przez C ++ 11 5.1.2 / 8.
Jeśli przechwytywanie lambda zawiera domyślne przechwytywanie i, identyfikatory w przechwytywaniu lambda nie powinny być poprzedzone przez &.Jeśli przechwytywanie lambda zawiera domyślne przechwytywanie = =, przechwytywanie lambda nie będzie zawierało tego i każdy zawierający go identyfikator będzie poprzedzony znakiem &.P: Czy istnieje jakaś przyczyna lub historia tego przepisu?