与Boost.Bind相比,Boost.Functional有什么好处?

3

我从未使用过Boost.Functional,只是简单地阅读了它的文档。看起来它是标准<functional>头文件的改进。

Boost.Functional的主页上(Usage部分)的一个示例被选作库的介绍。使用Boost.Bind(或Boost.Lambda)可以更轻松地完成相同的工作。此外,Boost.Bind是<functional>头文件中其他工具的绝佳替代品。

我很好奇,Boost.Bind 是否能够完成 Boost.Functional 或 STL <functional> 头文件中的所有任务?或者说Boost.Functional 还有其他好处吗?

1个回答

2
如果你查看http://www.boost.org/doc/libs/1_47_0/libs/functional/index.html,它说:

头文件functional.hpp提供了对C++标准库(第20.3.5节到第20.3.8节)中指定的函数对象适配器的增强。这些增强主要是由于两个更改而可能的:

  • 我们使用Boost call_traits模板来避免对引用进行引用的问题,并提高参数传递的效率。
  • 使用两个函数对象特征类模板可以避免在此库中使用ptr_fun的需要。

使用方法

使用这些适配器应该与使用标准函数对象适配器基本相同;唯一的区别是您需要编写boost::而不是std::,并且将会得到更少的麻烦。

没有人再使用 "ptr_fun" 了(当您有Boost.Bind时),所以只剩下处理“引用 to 引用”的问题了。这回答了你的问题吗?


抱歉,但还没有。"我们使用Boost call_traits模板来避免引用到引用的问题...",所以这对于Boost.Functional来说并不特别。你的回答是"没有好处"吗? - Andriy Tylychko

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接