Boost :: bind和Boost Phoenix :: bind有什么区别?

Lea*_*ima 12 c++ boost boost-phoenix

Boost :: bind和Boost Phoenix :: bind有什么区别?

Joh*_*itb 15

phoenix::bind就像lambda::bind一个函数,它返回一个表达式模板,记录它必须调用给定的函数.它们分别与phoenix和lambda一起使用.结果,它们包含更多的东西.比如,它们返回的类型会重载所有可能的运算符,以便以后可以记录和执行它们各自的操作.

boost::bind是"只是"一个活页夹.它将绑定函数,并返回一个函数调用运算符重载的类型,而不是更多.

  • 值得注意的是,在[Phoenix 3.0](http://www.boost.org/doc/libs/1_47_0/libs/phoenix/doc/html/index.html)(在boost 1.47中发布)中,`phoenix :: bind `是[兼容](http://www.boost.org/doc/libs/1_47_0/libs/phoenix/doc/html/phoenix/modules/bind/compatibility_with_boost_bind.html)和`boost :: bind`.记住litb在这里的反应,这意味着你可以在以前使用`boost :: bind`的地方使用`phoenix :: bind`,但我不认为它可以反过来(你不能使用)在lambda中的`boost :: bind`并期望它像`phoenix :: bind`一样工作. (2认同)