对于foo
声明为Foo& foo = ...;
,lambda采用值捕获和按引用捕获语义之间有什么区别吗?
Dav*_*eas 16
我认为你已经陷入了一种常见的误解......引用是真实对象的别名.初始化后,对引用的任何使用都完全等同于原始对象的使用.如果你考虑这个问题,那么这个问题就没有意义了 如果引用是对象,则[foo](){}
无论foo
是对象还是对象的引用,行为都将完全相同.
Xeo*_*Xeo 12
是,有一点不同.
§5.1.2 [expr.prim.lambda] p14
如果实体被隐式捕获并且捕获默认值为或者如果使用不包含的捕获显式捕获实体,则通过副本捕获实体.对于由副本捕获的每个实体,在闭包类型中声明一个未命名的非静态数据成员.这些成员的声明顺序未指定.如果实体不是对对象的引用,则这种数据成员的类型是对应的捕获实体的类型,否则是引用的类型.
=
&
因此,如果捕获按值命名引用的标识符,则会获得引用对象的副本.
归档时间: |
|
查看次数: |
260 次 |
最近记录: |