How does one include TR1?

后端 未结 6 999
花落未央
花落未央 2021-02-03 22:58

Different compilers seem to have different ideas about TR1. G++ only seems to accept includes of the type:

#include 
#include 

        
相关标签:
6条回答
  • 2021-02-03 23:05
    #ifdef _WIN32
        #include <unordered_map>
        #include <memory>
    #else
        #include <tr1/unordered_map>
        #include <trl/memory>
    #endif
    
    0 讨论(0)
  • 2021-02-03 23:08

    If under Windows, add the 'tr1' directory to the system path. Then #include <memory> should work.

    0 讨论(0)
  • 2021-02-03 23:09

    I asked myself the same question. Unfortunately, the technical report doesn't say how the headers should be included. It only defines that the extensions should be in the ::std::tr1 namespace.

    0 讨论(0)
  • 2021-02-03 23:12

    Install boost on your machine.
    Add the following directory to your search path.

    <Boost Install Directory>/boost/tr1/tr1

    see here boost tr1 for details

    Now when you include <memory> you get the tr1 version of memory that has std::tr1::shared_ptr and then it includes the platform specific version of <memory> to get all the normal goodies.

    0 讨论(0)
  • 2021-02-03 23:22

    Perhaps the best way would be to simply use boost libraries for now, as in many cases they have alternatives with a similar interface to TR1 features, and are just in a different (but consistent) header path and namespace. This has the advantage of working on compilers that haven't even begun implementing C++0x. And there are plenty of useful boost libraries that aren't in TR1 at all :)

    Alternately, on G++, you could try passing --std=gnu++0x on the command line. This works for <unordered_set> and <unordered_map>, at least. Then to make it available in std::tr1:

    namespace std { namespace tr1 { using namespace std; } }
    

    This is evil, naturally. I highly recommend the boost approach instead :)

    0 讨论(0)
  • 2021-02-03 23:27

    A tad hacky perhaps, but you could simply add the compiler tr1 directory to your include path.

    0 讨论(0)
提交回复
热议问题