【发布时间】:2011-12-17 23:59:34
【问题描述】:
(我已经阅读了What is the lifetime of lambda-derived implicit functors in 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 的类型擦除,这似乎也有问题。
【问题讨论】: