boost :: function和std :: tr1 :: function之间是否存在重要的差异

时间:2012-07-30 20:14:10

标签: c++ boost tr1 boost-function

我在代码中使用了很多提升但是到目前为止还没有使用std::tr1。现在我需要一个更复杂的函数指针,就像那两个可以提供的一样。不幸的是C + 11还不是一个选择。我读到boost::function对某些编译器来说可能很棘手,例如(7.1之前的Visual Studio需要一个特殊的portable syntax),但没有找到std::tr1::function关于此主题的任何信息。关于两者之间的内存使用,速度和兼容性是否存在重大差异?

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

1 个答案:

答案 0 :(得分:3)

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

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

询问Boost的具体实现与接口规范之间是否存在差异(这不是一种实现),这是没有意义的。一种实现可能类似于Boost,并且没有实质性差异,另一种实现可能完全不同。 GCC的std::tr1::function由Boost.Function的作者提供,所以它的非常类似。