1

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

编辑:我目前使用的是 gcc 4.7,但代码也应该在 Visual Studio 上编译,最好也可以在 2005 等版本中编译

4

1 回答 1

3

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

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

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

于 2012-07-30T20:24:28.503 回答