현재 작업하고있는 코드는 일부 오래된 시스템에서 컴파일해야하는 경우가 있습니다. 예전의 IBM BlueGene/L에서 심즈를 실행합니다. 누가 지원 계약을 맺으면 꽤 오래된 C++ 컴파일러가 될 것입니다. 코드 자체는 shared_ptrs를 사용하며 원래 std :: tr1 :: shared_ptr을 사용하도록 작성되었습니다. 이전 BlueGene 시스템에서 컴파일 할 때 tr1 :: 구현이 없으므로 boost :: shared_ptr로 전환했습니다. 거기에 boost :: tr1 :: shared_ptr도있다. 코드가 연구 그룹 외부에서 더 널리 사용되고 있으므로 이식성이 더욱 중요 해지고 있습니다.진화하는 C++ std :: namespace를 처리하는 방법? 예 : std :: tr1 :: shared_ptr 대 std :: shared_ptr 대 boost :: shared_ptr 대 boost :: tr1 :: shared_ptr
큰 코드 코드베이스에서 이러한 종류의 표준 라이브러리 문제를 처리하는 가장 좋은 방법은 무엇입니까? 나는 새로운 C++ 11 표준에서 shared_ptr이 더 이상 tr1 네임 스페이스에 없기 때문에 다른 잠재력을 추가한다고 가정하고있다 : std :: shared_ptr, 그러나 이것은 널리 퍼진 지원이 될 것으로 생각된다. 가능한 한 최신 표준을 사용하고 싶지만 이식성을 유지해야합니다. 나는 부스트를 고수해야 할까? 귀하의 질문에
boost::tr1
에
: 당신은 다음과 같은 사용할 수 있습니다
... VC2010 및 최신 버전의 g ++와 같이 사용할 수 있습니다.다른 컴파일러를 지원해야하는 경우에는 부스트를 사용하는 것이 가장 쉽습니다. :) – Sven
shared_ptr이 네임 스페이스 std ::에 추가되기 때문에 그것이 네임 스페이스 std :: tr1 ::에서 제거 될 것임을 의미하지는 않습니다. gcc/libstdC++가 앞으로도 계속 유지된다는 것을 알고 있습니다. 사실, 저는 Visual Studio가 동일 할 것이라고 확신합니다. – emsr
만약 당신이 주위를 둘러 보면, std :: shared_ptr에 대한 지원은 지난 2 년 동안 대부분의 컴파일러에서 매우 광범위하다고 생각합니다. std :: first로 고수하고 std :: tr1 ::을 찾은 다음 그 순서대로 부스트를 시도해보십시오. – emsr