【发布时间】:2015-01-31 02:12:04
【问题描述】:
是否存在过创建仿函数比使用 lambda 更有意义的情况?
我知道我的问题实际上是 when to use a lambda over a functor 的反面,但我想不出在实践中函子比 lambda 更首选的情况。对此有什么想法吗?
【问题讨论】:
-
例如,
std::function基本上是一个高级仿函数。当函子更复杂时,它们比 lambdas 特别有用。 -
如果你想在一堆地方重复使用它。通常 lambda 的吸引力(至少对我而言)是它已经到位。但是,如果您需要在很多地方(例如)使用相同的比较器,那么仿函数会更有意义。
-
遗憾的是,有些人仍然无法使用 C++11:我想说这就是这样一种情况。不过不是很好。
-
如果,由于某种原因,你有一个不是很短的比较器或谓词,它有一个状态并且你在多个位置使用(具有不同的状态,所以想象一个仿函数的多个实例,每个实例都使用了多次) .这似乎是人为的,但它是可以想象的。此外,如果您需要它作为模板并且手头没有 C++14。
-
调试到仿函数 (is) 可能比调试到 lambda 更好