我觉得标准这么定很顺理成章吧,毕竟c++是value semantic的,lambda在设计的时候,除了()里需要动态传入的变量,肯定也考虑了模拟全部变量的需求,那[]里的变量就是类似传入的全局变量,既然是传变量,肯定默认是value-semantic的,也就是copy一份。为了完善这个功能,capture by move也是11以后增加的。
【 在 here080 的大作中提到: 】
: 这样规定的目的有两个:
: 1. 引用即别名(alias)的规则。C++里几乎任何时候一个T&变量和它所指向的原始T变量用起来都是完全等价的。引用只是换个名字,不应该造成效果上的区别。
: 2. 功能合理性。以上面的例子为例:
: ...................
--
FROM 122.224.174.*