一个人如何包括TR1?
-
22-07-2019 - |
题
不同的编译器似乎有大约TR1不同的想法。 G ++似乎只接受包括所述类型的:
#include <tr1/unordered_map>
#include <tr1/memory>
...
虽然微软编译器只接受:
#include <unordered_map>
#include <memory>
...
至于我了解TR1,微软的方法是正确的。
有没有办法让G ++接受的第二个版本? 在便携式的方式如何,一般把手TR1一个?
解决方案
在计算机上安装的推动作用。结果 添加下面的目录搜索路径。
<升压安装目录> /升压/ TR1 / TR1
在这里看到的细节升压TR1
现在,当你包括<内存>你的内存TR1版本具有的std :: TR1的:: shared_ptr的,然后包括<内存>的特定于平台的版本,以获得所有正常的东西。
其他提示
#ifdef _WIN32
#include <unordered_map>
#include <memory>
#else
#include <tr1/unordered_map>
#include <trl/memory>
#endif
也许最好的方法是简单地使用升压库现在,在许多情况下,他们有一个替代品类似接口TR1的功能,并且是刚刚在不同的(但一致的)报头的路径和命名空间。这对那些甚至没有的开始的实施的C ++ 0x编译器工作的优势。并有大量的不在TR1在所有有用的升压库:
)可替换地,在G ++,可以尝试通过--std = GNU ++ 0x中在命令行上。这适用于
namespace std { namespace tr1 { using namespace std; } }
这是恶,自然。我高度推荐升压加以取代:)
一点点哈克也许是的,但你可以简单地编译器TR1目录添加到您的包含路径。
如果在Windows下,添加“TR1”目录到系统路径。然后#include <memory>
应该工作。
我问自己同样的问题。不幸的是,技术报告并没有说头应该如何被包括在内。它仅定义了扩展应当在::的std :: TR1命名空间。
不隶属于 StackOverflow