몇 년 전 C ++ 기술을 선반에 올려 놓았는데 이제 다시 필요할 때 풍경이 바뀌는 것 같습니다.
우리는 지금 C ++ 11을 가지고 있으며, 많은 Boost 기능과 겹친다는 것을 이해합니다.
겹치는 부분이 어디에 있는지, 어떤 부스트 라이브러리가 레거시가 될지, 부스트 기능 대신 어떤 C ++ 11 기능을 사용하고 어떤 것이 더 좋지 않은지 추천하는 요약이 있습니까?
몇 년 전 C ++ 기술을 선반에 올려 놓았는데 이제 다시 필요할 때 풍경이 바뀌는 것 같습니다.
우리는 지금 C ++ 11을 가지고 있으며, 많은 Boost 기능과 겹친다는 것을 이해합니다.
겹치는 부분이 어디에 있는지, 어떤 부스트 라이브러리가 레거시가 될지, 부스트 기능 대신 어떤 C ++ 11 기능을 사용하고 어떤 것이 더 좋지 않은지 추천하는 요약이 있습니까?
답변:
C ++ 11 언어 기능 또는 라이브러리로 대체 가능
<cmath>
, 아래 목록 참조
log1p
, expm1
cbrt
, hypot
acosh
, asinh
,atanh
TR1 ( TR1 라이브러리 인 경우 설명서에 표시되어 있음 )
C ++ 11에서 백 포트 된 기능 :
C ++ 17 언어 기능으로 대체 가능 :
<cmath>
( 특수 수학 IS ), 아래 목록 참조
표준 팀은 여전히 작업 중입니다.
다양한 템플릿을 사용하여 MPL 의 많은 부분을 잘라내 거나 제거 할 수 있습니다. Lexical 캐스트 의 일부 일반적인 사용 사례는 std :: to_string 및 std :: sto X 로 대체 될 수 있습니다 .
일부 부스트 라이브러리는 C ++ (11)에 관련된뿐만 아니라 좀 더 확장이되어, 예를 들어 Boost.Functional이 / 해시가 포함 hash_combine C ++ 11에서 찾을 수 없습니다 및 관련 기능을 Boost.Chrono는 I / O 및 라운딩 및 많은 다른 시계를 가지고, 등을 부스트하기 전에 부스트를 살펴보고 싶을 수도 있습니다.
std::unique_ptr
TR1의 일부 는 아니지만 (이동 의미론이 필요하기 때문에)
실제로 부스트 라이브러리가 레거시가 될 것이라고 생각하지 않습니다.
예, 당신은 사용할 수 있어야합니다 std::type_traits
, regex
, shared_ptr
, unique_ptr
, tuple<>
, std::tie
, std::begin
더으로 이동하지 않는 대신 부스트 Typetraits의 / 유틸리티,,, 튜플 부스트, Smartpointer 부스트 범위 라이브러리를 높일 수 있지만, 실제로는 '스위치'에 진짜 필요가 없을 것 C ++ 11에 대한 코드.
또한 내 경험 std
에 따르면 대부분의 버전은 다소 기능이 떨어집니다. 예 AFAICT 표준은 않습니다 하지 가
bool boost::basic_regex<>::empty()
) 및 기타 인터페이스 차이점
게으른 표현 템플릿 기반 람다; C ++ 11과 달리 오늘날 다형성이 가능 하다는 점에서 불가피한 이점이 있습니다 . 따라서 그들은 종종 더 간결해질 수 있습니다.
std::vector<int> v = {1,2,-9,3};
for (auto i : v | filtered(_arg1 >=0))
std::cout << i << "\n";
// or:
boost::for_each(v, std::cout << _arg1);
가장 확실한 것은 C ++ 11 람다 (후행 리턴 유형, 명시 적 캡처 및 선언 된 매개 변수 포함)보다 여전히 매력적입니다.
또한 C ++ 03에서 C ++ 11 로의 경로 별 마이그레이션을 촉진하고 C ++ 11 및 C ++ 03 코드베이스를 통합하는 데있어 Boost의 BIG 역할이 있습니다. 나는 특히 생각하고있다
boost::result_of<>
및 관련)그냥 내 $ 0.02