【发布时间】:2013-11-26 12:46:00
【问题描述】:
如果 lambda 是无状态的,即它是否捕获任何内容,我将如何进行测试? 我的猜测是使用带有函数指针重载或模板特化的重载解析?
int a;
auto l1 = [a](){ return 1; };
auto l2 = [](){ return 2; };
// test l1 and l2, get a bool for statelessness.
【问题讨论】:
-
提示:如果可转换为函数指针,则为无状态。
-
@Nawaz:很有趣。你有任何来自标准的报价吗?
-
@MM.:我不记得任何引用,但如果 lambda 没有捕获任何变量,那么它可以隐式转换为函数指针。
-
就我个人而言,我想知道为什么它会很重要,以及为什么有人想要单独列出 lambda。我可怜的旧函数对象感觉被忽视了。
-
@R.MartinhoFernandes:因为无状态 lambda 转换为精确的一种函数指针类型,并且调用结果指针也一样?在一般函子情况下没有保证。