我在代码中使用了很多提升但是到目前为止还没有使用std::tr1
。现在我需要一个更复杂的函数指针,就像那两个可以提供的一样。不幸的是C + 11还不是一个选择。我读到boost::function
对某些编译器来说可能很棘手,例如(7.1之前的Visual Studio需要一个特殊的portable syntax),但没有找到std::tr1::function
关于此主题的任何信息。关于两者之间的内存使用,速度和兼容性是否存在重大差异?
编辑:我目前正在使用gcc 4.7,但是代码也应该在Visual Studio上编译,最好还有像2005年那样稍微过时的版本
答案 0 :(得分:3)
你读了什么?你是什么意思狡猾?你指的是一些只支持boost::function1<void, int>
形式而不是boost::function<void(int)>
形式的古代编译器吗?
std::tr1::function
应该由你的编译器提供,所以如果你的编译器提供它,那么它应该完美地工作,而不是“棘手”(无论你的意思是什么)。
询问Boost的具体实现与接口规范之间是否存在差异(这不是一种实现),这是没有意义的。一种实现可能类似于Boost,并且没有实质性差异,另一种实现可能完全不同。 GCC的std::tr1::function
由Boost.Function的作者提供,所以它的非常类似。