C++ラムダ式のcapture-listでcapture =
-defaultモードが禁止さthis
れているのはなぜか疑問に思います。
あれは、
[=, this]{ }; // error
[&, this]{ }; // OK
これはC++11 5.1.2/8で指定されています。
- lambda-captureに&であるcapture-defaultが含まれている場合、lambda-captureの識別子の前に&を付けてはなりません。
- lambda-captureに=であるcapture-defaultが含まれている場合、lambda-captureにはこれが含まれておらず、含まれている各識別子の前に&が付いている必要があります。
Q:このルールの理由や背景説明はありますか?