是否有一种巧妙的方法可以防止对象通过引用被捕获到兰巴中?例如,我想禁止这样做:
class A {};
void Foo()
{
A a;
auto lamda = [&a](){}; // Disallow this
// give lambda to async process
// use A to help know when the lamda finally gets called
}
我想防止这种情况发生,因为A
在这种情况下很容易被滥用,所以我想防止用户伤害自己。有人可能会争辩说,任何类都可能被滥用,但鉴于A
's 的合同,用户这样做确实很诱人。我可以根据需要自由包装、更改和以其他方式混淆 A。
编辑
创建 lambda 后,它将被移交给异步进程,而当前线程内联等待,直到该异步进程完成。 A
是一个帮助了解异步操作何时完成的类(想想boost::future
)。