根据我找到的资料来源,Lambda 表达式实质上是由编译器建立一个类别,该类别具有重载的函式呼叫运算子和引用的变数作为成员。这表明 lambda 表达式的大小是不同的,如果给定足够的引用变量,大小可以是 任意大小。
一个 std::function
应该有一个 固定大小,但它必须能够包装任何类型的可调用,包括任何相同类型的 lambda。如何实施?如果 std::function
在内部使用指向其目标的指针,那么在复制或移动 std::function
实例时会发生什么情况?是否涉及堆分配?