我想知道为什么在C++ lambda 表达式的捕获列表中禁止=
捕获默认模式。this
那是,
[=, this]{ }; // error
[&, this]{ }; // OK
这是由 C++11 5.1.2/8 指定的。
- 如果 lambda-capture 包含一个捕获默认值 &,则 lambda-capture 中的标识符不应以 & 开头。
- 如果 lambda-capture 包含一个捕获默认值 =,则 lambda-capture 不应包含它,并且它包含的每个标识符都应以 & 开头。
问:这条规则有什么原因或背景故事吗?