为什么闭包类型/ lambda在C ++中没有默认构造函数

时间:2016-12-16 22:29:45

标签: c++ lambda closures c++14 default-constructor

lambdas没有默认构造函数的原因是什么?这背后有任何技术原因,还是纯粹的设计决定?

1 个答案:

答案 0 :(得分:0)

C ++中的Lambdas是一种语法上的便利,它允许程序员避免使用传统语法来声明仿函数,如

struct my_functor
{
bool operator()(Object &) { /* do something */ return false; }
}

因为使用这种语法编写仿函数对于简单函数来说太长了。

Lambdas提供参数捕获选项,例如[=],[&]等,以保存您声明变量并初始化它们,就像您在仿函数对象的构造函数中所做的那样。

因此,Lambdas不会通过设计向您公开任何构造函数语法。

没有技术原因lambda函数不能公开构造函数,但如果它这样做,它将停止模仿它命名的设计概念。

感谢评论员提出的问题。