2017-10-10 2 views
2

내 프로젝트에서 네트워킹 및 스레드 관리에 boost::asio을 사용하고 있습니다. 전 현대 C++의 일부 기능, 예를 들어 공유 포인터를 사용하고 싶습니다.이미 Boost를 사용하고 있다면 Boost 또는 C++ 11 표준 라이브러리를 선호합니까?

두 가지 선택 항목이 있습니다. boost::shared_ptr입니다. 부스트를 이미 사용하고 있으므로 std::shared_ptr부터 사용하고 있습니다. C++ 11 컴파일러를 사용하고 있기 때문입니다. 내가 알기로는 그것들이 기본적으로 동등하다는 것을 이해하지만, 그들은 서로 양립 할 수 없다.

외부 종속성을 무의미하게 사용하지 않기 위해 Boost보다 표준 라이브러리 구성 요소를 선호해야한다고 읽었습니다. 그러나 Boost (적어도 ASIO를 표준 라이브러리에 통합하기로 결정할 때까지)를 사용할 것이므로 여전히 종속성이 필요합니다.

공유 포인터는 단지 예이며,이 질문 등 표준 라이브러리 부스트에서 인수 한 모든 기능과 같은 function, bind, thread에 적용

가 선호하는 구현입니다 내 상황을 감안할 때 기능? Boost 또는 표준 라이브러리 버전 중 일부를 사용하도록 선택해야하는 경우, Boost 또는 표준 라이브러리 구성 요소 중 일부를 사용할 때 선택 사항과 관련된 문제가 있습니까?

+0

표준 lib에서 같은 것을 얻을 수있을 때 boost 대안을 사용하는 이유는 무엇입니까? 나는 모른다. – user463035818

+0

의견은 기반? 아마 나는 독단적 인 늙은 고양이 일지 모르지만 반대 의견은 타당하지 않습니다. 그러므로 대답은 구체적입니다. – Bathsheba

+0

표준 사용에 대한 의견이 표준 의견이라면 단순히 표준이 아니어야합니까? – AOK

답변

6

Boost는 향후 C++ 표준을위한 실질적인 피더이지만, 이 아니므로 C++ 표준 라이브러리보다 Boost를 선택하면 항상 호환성 중단이 필요합니다. (예를 들어 Boost Spirit에 대한 역사적인 주요 변경 사항 참조).

따라서 가능할 때마다 항상 C++ 표준 라이브러리로 마이그레이션하는보기로 코딩하십시오.

또한 C++ 표준 라이브러리 함수를 사용하여 컴파일러 최적화가보다 쉽게 ​​이루어질 수 있습니다. 정확한 동작은 표준에 정의되어 있기 때문입니다.