문제

다른 컴파일러마다 TR1에 대해 다른 아이디어가있는 것 같습니다. G ++는 유형의 포함을 받아들이는 것 같습니다.

#include <tr1/unordered_map>
#include <tr1/memory>
...

Microsofts 컴파일러 만 허용합니다.

#include <unordered_map>
#include <memory>
...

내가 TR1을 이해할 때 Microsoft Way는 올바른 방법입니다.

G ++가 두 번째 버전을 수락하는 방법이 있습니까? 일반적으로 휴대용 방식으로 TR1을 어떻게 처리합니까?

도움이 되었습니까?

해결책

컴퓨터에 부스트를 설치하십시오.
검색 경로에 다음 디렉토리를 추가하십시오.

u003CBoost Install Directory>/boost/tr1/tr1

여기를 봐 TR1 부스트 자세한 내용은

이제 포함 할 때u003Cmemory> std :: tr1 :: shared_ptr 인 TR1 버전의 메모리를 얻은 다음 플랫폼 특정 버전을 포함합니다.u003Cmemory> 모든 정상적인 음식을 얻기 위해.

다른 팁

#ifdef _WIN32
    #include <unordered_map>
    #include <memory>
#else
    #include <tr1/unordered_map>
    #include <trl/memory>
#endif

아마도 가장 좋은 방법은 단순히 사용하는 것입니다 후원 현재 라이브러리는 대부분의 경우 TR1 기능과 유사한 인터페이스를 갖는 대안이 있으며 다른 (그러나 일관된) 헤더 경로 및 네임 스페이스에 있습니다. 이것은조차하지 않은 컴파일러에서 작업하는 이점이 있습니다. 시작 C ++ 0x 구현. 그리고 TR1에는 전혀 유용한 부스트 라이브러리가 많이 있습니다 :)

또는 g ++에서는 명령 줄에서 -std = gnu ++ 0x를 통과시킬 수 있습니다. 이것은 효과가 있습니다u003Cunordered_set> 그리고u003Cunordered_map> , 적어도. 그런 다음 std :: tr1에서 사용할 수 있도록합니다.

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

이것은 자연스럽게 악합니다. 대신 부스트 접근법을 강력히 추천합니다 :)

어쩌면 약간의 해킹이지만 컴파일러 TR1 디렉토리를 포함 경로에 추가 할 수 있습니다.

Windows 아래에있는 경우 시스템 경로에 'TR1'디렉토리를 추가하십시오. 그 다음에 #include <memory> 작동해야합니다.

나는 나 자신에게 같은 질문을했다. 불행히도 기술 보고서는 헤더가 어떻게 포함되어야하는지 말하지 않습니다. 확장자가 :: std :: tr1 네임 스페이스에 있어야한다고 정의합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top