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

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

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

最佳答案

C++ 中的 Lambda 是一种方便的语法,允许程序员避免使用像这样的传统语法声明仿函数

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

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

Lambda 提供参数捕获选项,例如 [=]、[&] 等,以节省您声明变量和初始化它们的时间,就像您在仿函数对象的构造函数中所做的那样。

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

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


感谢问题下的评论员。

关于c++ - 为什么闭包类型/lambda 在 C++ 中没有默认构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41193353/

相关文章:

支持多线程程序的 C++0X 标准

lua - 在 Lua 中实现闭包?

C++0x 闭包/lambda 示例

调用 header 中定义的模板函数时出现 C++ 链接器错误

C++ 控制台自由文本输入(最大字符大小)

c++ - sse类型: Segmentation Fault的数组

multithreading - C++11 用 clang 替代 OpenMP

lambda - 在 java 8 lambdas 中,如何访问流中的原始对象?

Python:列表函数和 lambda 表达式

python - 如何修复高阶函数来模拟联名银行账户?