2012-03-09 4 views
11

Rvalue 참조 및 이동 의미는 불필요한 복사본을 줄임으로써 코드 속도를 크게 높일 수있는 주요 C++ 11 기능입니다. STL은 C++ 11/0x 컴파일러가 사용될 때이 새로운 기능을 사용하도록 업데이트되었습니다 (예 : gcc 4.6)부스트 라이브러리가 의미 이동을 활용합니다

Boost 1.48은 이전 C++ 03 컴파일러에서 이동 의미를 에뮬레이션하기 위해 새 라이브러리를 도입했습니다. 이 라이브러리는 코드가 C++ 11 컴파일러로 컴파일 될 때 실제 rvalue 참조로 확장되는 매크로 또는 C++ 03 컴파일러로 코드가 컴파일 될 때 에뮬레이트 된 rvalue 참조를 도입함으로써 작동합니다.

boost::container 외에도 다른 부스트 라이브러리가 아직 이동 의미 체계를 활용하도록 업데이트 되었습니까?

이동 의미가 다른 부스트 라이브러리에 추가 될 때 로드맵에 대해 자세히 설명하고 있습니까?

boost::multi_index_container은 버전 1.31에서 소개 되었기 때문에 Boost.MultiIndex Future work에 이동 의미를 추가하는 것에 대해 언급했습니다.

+0

주에서 C++ 11 전용 지원 추가 지원 : name "STL"은 더 이상 사용되지 않으며 모호합니다. 대신 "C++ 표준 라이브러리"를 사용하십시오. – Griwes

답변

8

질문에서 말했듯이, boost 1.48은 boost::move이라는 C++ 03을 사용하여 이동 의미를 에뮬레이션하는 라이브러리를 도입했습니다. 이것은 이온 가즈 타나가 (Ion Gaztanaga)에 의해 개발되었으며, (주로) 작성하여 현재 boost::intrusiveboost::container을 유지합니다.

모두 관입 및 용기 지원 이동 의미 - 사실 boost::intrusive에서이 boost::containerboost::intrusive 대응을 포장하여 구현 비 간섭 용기의 무리가 기본적으로 있기 때문에, boost::container에 대한 이동의 의미를 지원한다. 방해받는/용기가 내게는 boost::move을 쓰는 동기 였기 때문에 나머지 부스트에서 출발한다는 것은 놀라운 일이 아닙니다.

하지만 여기에는 부스트 로드맵이나위원회가 없다는 점이 중요합니다. 부스트는 배포, 웹 사이트 및 리뷰/품질 관리 프로세스를 공유하는 라이브러리 모음입니다. 각 라이브러리를 별도의 프로젝트로 생각해야합니다. 작성자/유지 관리자가 작업에 관심이있는 경우 (또는 물론 패치를 보낼 때만) 업데이트됩니다.

  • Boost.Interprocess는 1.45부터 지원을하고, 모두 C++ 11과 C++ 03 :

    The boost 1.48/1.49/1.50/1.51/1.52 release notes

    고체 답변을 볼 수있는 가장 좋은 장소입니다. 1.48 이전에는 boost.move가 된 코드가 들어있었습니다.
  • Boost.Asio은 1.47 이후로 지원합니다. C++ 03
  • Boost.Intrusive에는 에뮬레이션 (C++ (11) C++ 03) 1.48에 boost.move를 통해 지원을 받고 없습니다
  • Boost.Container 부스트를 통해 지원을 1.48에서 새로웠다 .move (C++ 11, C++ 03)
  • Boost.Icl
  • 가지지를 얻고 Boost.Unordered (C++ 03, C++ 11)에서 1.49 boost.move 통해지지를 얻고 boost.move를 통해 1.49 (C++ 11, #define을 사용하여 C++ 03에서 에뮬레이션 가능)
  • 부스트.스레드는 1.50 이후 C++ 03w 에뮬레이션/boost.move, 이전 버전이 C++ (11) 만 지원
  • Boost.Function을는 1.52