(我已经阅读了lambda派生的隐式函子在C ++中的寿命是什么?并且它不能回答这个问题。)
我知道C ++ lambda语法只是使用调用运算符和某些状态创建匿名类的实例的糖,并且我了解该状态的生存期要求(由您是否通过按引用的值捕获来确定。) Lambda对象本身的生命周期?在以下示例中,std::function
返回的实例是否有用?
std::function<int(int)> meta_add(int x) {
auto add = [x](int y) { return x + y; };
return add;
}
如果是,它将如何工作?对我来说,这似乎太神奇了-我只能通过std::function
复制整个实例来想象它能工作,这取决于我捕获的内容,可能非常繁琐-过去我std::function
主要使用裸函数指针,而复制这些实例是快。鉴于std::function
类型的擦除,这似乎也有问题。