【发布时间】:2013-11-12 18:37:15
【问题描述】:
我不想在 lambda 中按值捕获 shared_ptr 以确保对象的生命周期延长到调用 lambda 函数的点。
否则我实际上并不需要 shared_ptr。如果我这样做:
shared_ptr<..> sp;
sp->async_call( [sp](){} );
即使正文没有引用 sp,是否也保证会被复制?
【问题讨论】:
-
@c45207 是的,看来他基本上和我推断出一样的东西
-
作为一般规则,您几乎可以回答任何“X 可以优化吗?”关于 C++ 的问题和另一个问题:“程序能区分吗?”
-
@R.MartinhoFernandes 大多数情况下是正确的,但有时允许 c++ 优化具有副作用的 cctor,例如返回值