是否静态创建了c ++ 11 lambda目标?

时间:2015-12-02 10:16:56

标签: c++11 lambda

我有以下方法:

each

这是简单的asio截止日期处理程序,可以停止截止时间计时器并允许io_service-run循环继续(从官方的asio超时文档中获取)。

问题是关于函数本身生成的次数。我明白,我从这个方法(std :: function object)返回一个函数对象,它是在运行时动态创建的,但是只创建了一次目标函数?

2 个答案:

答案 0 :(得分:1)

lambda体内的代码只会被编译一次,而lambda的闭包对象类型的所有实例都将共享代码。但每次调用deadlineHandler都会导致创建一个新的闭包类型实例,其成员ecthis被初始化,然后创建一个std::function对象那个例子。

答案 1 :(得分:0)

lambda表达式隐式声明一个仿函数类,并创建它的实例 当然,类的类型(及其operator()的代码)的生成在编译时完成一次。
每次调用函数时,都会创建此类的新实例(包含lambda捕获的内容)