在 Effective C++ 的第 175 页第 1 段Meyers 对广义仿函数和绑定(bind)有这样的说法:
I find what
tr1::function
lets you do so amazing, it makes me tingle all over. If you're not tingling , it may be because you're staring at the definition of ... and wondering what's going on with the ....
我同意他关于绑定(bind)和功能的观点。关于 lambda,嗯,我了解 lambda 的作用以及它是如何做到的,但是有人可以发布一本书式的令人兴奋的片段或口头概述为什么 lambda 应该(用迈耶斯的术语)让我大吃一惊吗?我问是因为 C++ 的每个使用占位符语法的领域对我来说都像是一个黑客(是的,我对功能方法了解足够多,所以请不要基础),我同意它的使用方式在绑定(bind)和 MPL 中;但是,在 lambda 的情况下,我只想证明它是合理的,这样我就可以决定天气我应该把它输入我的轨道。
-- 编辑--
This SO answer提到仅使用 placedholder 语法内联创建仿函数,他提到高级用法,这可能是我所追求的......在高级用法中,它仍然只是内联创建仿函数吗?
最佳答案
根据上面留下的评论和问题中的链接,以下是我接受的答案(社区维基):
Boost.Lambda 满足了创建内联仿函数的目的(这是我喜欢的术语)。此功能可以通过 Function + Bind 来填充,但它比需要的更冗长,对于简单的仿函数来说,这是不必要的——例如,上面评论中显示的排序。
在 Function-Bind 对和 Lambda 之间显然存在语义重叠 — 这是一个历史产物,并且因为 Lambda 有它的存在理由,所以它存在于 Boost 中。
关于c++ - boost::function 和 boost::bind 很酷,但是 boost::lambda 真正酷的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2167588/