pol*_*pts 11 c++ boost boost-bind boost-lambda boost-phoenix
我试图理解这些不同绑定方法之间的区别.boost :: bind和boost :: phoenix :: bind也有类似的问题
但是,如果有人能用例子来解释这一点,那就太好了.也就是说,boost :: phoenix是boost :: bind,booost :: lambda库的超集吗?
Ral*_*ang 10
我认为这个故事是(尽管我还不够讲述整个故事),首先创建了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是多变的,非常强大,非常酷,具有编译时间长的缺点.