为什么闭包类型/ lambdas在C++中没有默认构造函数
答
lambda表达式在C++是一个语法上的方便,以允许程序员避免宣告使用传统的句法的算符等
struct my_functor
{
bool operator()(Object &) { /* do something */ return false; }
}
因为使用此语法写入函子被认为太长篇大论为简单的功能。
Lambdas提供参数捕捉选项,例如[=],[&]等,以便为您节省声明变量并初始化变量,就像您在函子对象的构造函数中所做的那样。
因此,Lambdas不会向设计公开任何构造函数语法。
没有任何技术上的原因,lambda函数无法公开构造函数,但是如果这样做,它将停止模仿它命名的设计概念。
感谢评论员在这个问题下。
+1
评论Lambdas确实暴露复制和移动构造函数,但。 – AndyG
它的目的是什么?它是在你声明它时构造的。 – NathanOliver
你在设想一个默认构造函数在做什么? –
@NathanOliver,我会喜欢在[这个答案](http://stackoverflow.com/a/41189224/434551)默认构造的lambda函数。把它看作指针的'nullptr'类似物。 –