我可以在VS2010中使用C ++ TR1吗?

时间:2013-07-19 02:33:28

标签: c++ visual-studio-2010 tr1

我们有一些用TR1编写的代码,例如:

#include <tr1/functional>
...
typedef std::tr1::function<void(int)> MyFunction;
..

通过GCC编译可以正常工作,但VS2010失败了。

我们的代码有compatibility issue with C++11所以我担心我不能简单地切换到C ++ 11。我不想在我们的代码中引入boost。

我是否应该为VS2010下载任何包或其他内容以使其支持TR1?

2 个答案:

答案 0 :(得分:4)

您可以在VS 2010中直接使用<functional>。所以它就是

#include <functional>
...
typedef std::function<void(int)> MyFunction;
..

VS 2010将先前std::tr1中的内容移动到通常的std命名空间中,但VS 2008仍使用std::tr1。也就是说,如果需要,您仍然可以明确地使用tr1命名空间I.e。

#include <functional>
...
typedef std::tr1::function<void(int)> MyFunction;
..

也有效(注意包含的头文件没有tr1/)。

相关链接:

What are differences between std, tr1 and boost (as namespaces and/or libraries)?

Why does VS2010 maintain the std::tr1 namespace?

答案 1 :(得分:3)

VS 2010支持开箱即用的TR1。当你包含它时,你不需要在文件名的开头加tr1/

#include <functional>

typedef std::tr1::function<void(int)> MyFunction;

请注意,TR1没有为标题指定文件名,因此只要符合TR1,任何一个都与另一个大致相同。