kaa*_*kaa 4 c++ lambda pointers object-lifetime c++11
例如,有一种方法:
void foo( A* p )
{
auto l = [=](){ /* Do Something using p */ };
// Use l ...
}
Run Code Online (Sandbox Code Playgroud)
我应该如何捕获指针:通过引用或值?里面的lambda p没有改变,只是使用了它的方法.
它是指针的事实不会影响您关于ref或值捕获的决定.由于指针足够小并且您不想编写它,因此您可以按值捕获.
我通常使用以下规则:
因此,应该通过值捕获不会更改的指针.如果编译器检测到没有写入,它可能会通过引用优化捕获并且无论如何都会传递值,但我不确定.