boost::function 和 std::tr1::function 之间是否有重要的区别需要了解



我在代码中大量使用 boost,但到目前为止一直没有使用 std::tr1 。现在我需要一个更复杂的函数指针,就像这两个指针可以提供的那样。不幸的是,C+11还不是一个选择。我读到某些编译器可能会boost::function棘手,例如(7.1之前的Visual Studio需要特殊的可移植语法(,但没有找到有关此主题的任何std::tr1::function信息。两者之间的内存使用,速度和兼容性有什么重要区别吗?

编辑:我目前正在使用gcc 4.7,但代码也应该在Visual Studio上编译,最好也像2005这样过时的版本

你读了什么?你说的棘手是什么意思?你指的是一些古老的编译器只支持boost::function1<void, int>形式而不是boost::function<void(int)>形式吗?

std::tr1::function应该编译器提供,所以如果你的编译器提供了它,那么它应该完美地工作,而不是"棘手"(不管你的意思是什么(。

询问 Boost 的特定实现与不是实现的接口规范之间是否存在差异是没有意义的。 一个实现可能与 Boost 的类似并且没有实质性差异,另一个实现可能完全不同。GCC的std::tr1::function是由Boost.Function的作者贡献的,所以它非常相似。

最新更新