【发布时间】:2018-08-14 19:00:58
【问题描述】:
我们可以像这样创建一个 lambda:
auto x = [](){};
我可以像这样在堆上创建一个副本:
auto y = new decltype(x)(x);
问题是,是否可以一步完成?无需额外步骤即可在堆上创建 lambda?
【问题讨论】:
-
我认为问题应该是:什么是真正的lambda类型?因为
auto只是隐藏类型名称。 -
@SHR lambda 类型未命名:"The lambda expression is a prvalue expression of unique unnamed non-union non-aggregate class type"。它的“真实类型”通常是一些编译器生成的乱码名称,但这对您没有帮助,因为您无法直接命名它。
-
答案表明这是可能的,但真正的问题是;为什么?