3

Effective C++ Meyers 的第 175 页第 1 段中,关于广义函子和绑定有这样的说法:

我发现是什么tr1::function让你做的如此惊人,它让我全身发麻。如果你没有感到刺痛,那可能是因为你盯着……的定义,想知道……是怎么回事。

我同意他的绑定和功能。关于 lambda,嗯,我了解 lambda 的作用以及它是如何做到的,但是有人可以发布一本书式的令人兴奋的片段或口头概述为什么 lambda 应该(用迈耶斯的术语)让我大吃一惊吗?我之所以问,是因为 C++ 中使用占位符语法的每个领域对我来说都像是一个 hack(是的,我对函数方法了解得够多了,所以请不要基础知识),我同意它在 bind 和 MPL 中的使用方式;但是,在 lambda 的情况下,我只是希望它是合理的,这样我就可以决定天气我应该将它输入到我的曲目中。

- 编辑 -

这个SO答案提到了仅使用占位符语法的仿函数的内联创建,他提到了高级用法,这可能就是我所追求的……在高级用法中,它仍然只是内联创建仿函数吗?

4

2 回答 2

4

根据上面留下的评论和问题中的链接,以下是我接受的答案(社区维基):

  1. Boost.Lambda 满足了内联仿函数创建的目的(这是我喜欢的术语)。这个功能可以通过 Function + Bind 来填充,但它比它需要的更冗长,而且对于简单的函子,这是不必要的——例如,上面注释中显示的排序。

  2. Function-Bind 对和 Lambda 之间显然存在语义重叠——这是一个历史产物,并且因为 Lambda 有其存在的理由,它存在于 Boost 中。

于 2010-01-30T11:12:44.987 回答
0

它的“酷”之处在于,与boost foreachboost parameter一样,将语法注入/扩展到 C++ 中,而 C++ 中不存在该语言,即它直接模拟匿名函数作为参数。

于 2010-01-30T11:36:21.627 回答