gpt4 book ai didi

c++ - boost::bind、boost::lambda::bind 和 boost::phoenix::bind 之间的区别

转载 作者:可可西里 更新时间:2023-11-01 15:16:11 25 4
gpt4 key购买 nike

我试图了解这些不同绑定(bind)方法之间的区别。 boost::bind and boost::phoenix::bind 也有类似的问题

但是,如果有人能用示例来解释这一点,那就太好了。 boost::phoenix 是 boost::bind、booost::lambda 库的超集也是真的吗?

最佳答案

我认为这个故事是(虽然我还不够大,无法讲述整个​​故事),boost::bind 最初是为了取代 C++98 中难以使用的 bind1st/bind2nd 而创建的,它实现了它的目标,现在是 C++11 的一部分。但也正如过去 10 年见证了 C++ 中函数式编程风格的兴起,boost::lambda 将它推向了如此远(在它创建时),它支持相当广泛的 C++ 中纯库方法的函数结构。

然后我从新闻组了解到,boost::lambda 和 boost::phoenix 的作者试图将这两个库结合起来,因为它们处理几乎相同的问题。我想那是设计精美的 boost::phoenix2

然后是 boost::proto,这是一个用于编写表达式模板的库,或者我会说它是一个元库。于是凤凰再次涅槃,在 boost::proto 上重生,然后我们看到了 phoenix3。我认为 phoenix3 是以上所有中最强大的。

另一方面,C++11 增加了对 lambda 表达式的语言支持,我个人觉得这非常有用和方便。唯一的缺点是它不是多态的(而 phoenix3 允许创建多态函数对象)。

作为我个人经验得出的结论,C++11 lambda 表达式是日常工作的选择,如果可用的话。它方便、清晰且编译时友好。 Phoenix3 是多态的,非常强大,非常酷,缺点是编译时间长。

关于c++ - boost::bind、boost::lambda::bind 和 boost::phoenix::bind 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8035835/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com