如何包含TR1?

Gru*_*bel 28 c++ portability tr1 include c++11

不同的编译器似乎对TR1有不同的看法.G ++似乎只接受包含的类型:

#include <tr1/unordered_map>
#include <tr1/memory>
...
Run Code Online (Sandbox Code Playgroud)

虽然微软编译器只接受:

#include <unordered_map>
#include <memory>
...
Run Code Online (Sandbox Code Playgroud)

至于我理解TR1,微软的方式是正确的.

有没有办法让G ++接受第二个版本?一般人如何以便携方式处理TR1?

Mar*_*ork 17

在您的机器上安装boost.
将以下目录添加到搜索路径中.

<Boost安装目录>/boost/tr1/tr1

有关详细信息,请参阅boost tr1

现在,当你包含<memory>时,你会获得具有std :: tr1 :: shared_ptr的内存的tr1版本,然后它包含平台特定版本的<memory>以获得所有正常的好东西.


小智 13

#ifdef _WIN32
    #include <unordered_map>
    #include <memory>
#else
    #include <tr1/unordered_map>
    #include <trl/memory>
#endif
Run Code Online (Sandbox Code Playgroud)