繁体   English   中英

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

[英]Can I use C++ TR1 in VS2010?

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

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

通过与GCC进行编译,它可以正常工作,但与VS2010一起运行时则失败。

我们的代码存在与C ++ 11的兼容性问题,所以我恐怕不能简单地切换到C ++ 11。 我也不想在我们的代码中引入boost。

VS2010是否有任何软件包或我应该下载的软件包才能支持TR1?

您可以在VS 2010中直接使用<functional>

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

VS 2010将以前std::tr1移到了通常的std名称空间中,但是VS 2008仍使用std::tr1 就是说,如果需要,您仍然应该仍然可以显式使用tr1命名空间。

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

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

相关链接:

std,tr1和boost(作为名称空间和/或库)之间有什么区别?

为什么VS2010维护std :: tr1命名空间?

VS 2010开箱即用地支持TR1。 但是,在包含文件名时,不需要在文件名的开头加上tr1/

#include <functional>

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

请注意,TR1并未为标头指定文件名,因此就符合TR1而言,其中一个与另一个大致相同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM