Namespaces
Variants

C++ standard libraries extensions, version 2

From cppreference.net

C++ 라이브러리 기본 확장 버전 2, ISO/IEC TS 19568:2017은 버전 1 에서 정의된 구성요소들에 추가로 다음과 같은 새로운 C++ 표준 라이브러리 구성요소들을 정의합니다:

목차

C++ 탐지 관용구

헤더 파일에 정의됨 <experimental/type_traits>
template-id 가 올바른 형식인지 감지하는 앨리어스 템플릿
(alias template)
detected_t 가 실패 시 반환하는 클래스 타입
(class)

포인터와 유사한 객체를 위한 const 전파 래퍼

헤더 파일에 정의됨 <experimental/propagate_const>
포인터와 유사한 객체를 위한 const 전파 래퍼
(클래스 템플릿)

비소유 포인터

헤더 파일에 정의됨 <experimental/memory>
소유권을 가지지 않는 포인터를 나타내는 클래스
(클래스 템플릿)

std::array 생성

헤더 파일에 정의됨 <experimental/array>
(library fundamentals TS v2)
인자들로부터 크기와 선택적으로 요소 타입이 추론되는 std::array 객체를 생성함
(함수 템플릿)

ostream_joiner

헤더 파일에 정의됨 <experimental/iterator>
인접한 요소들을 구분자로 분리하여 출력 스트림에 연속적인 요소들을 기록하는 출력 반복자
(클래스 템플릿)

간단한 난수 생성 기능

각 스레드마다 스레드별 엔진 으로 std::default_random_engine 타입의 예측 불가능한 상태로 초기화된 엔진이 유지되며, 아래 함수들에서 사용됩니다.

헤더에 정의됨 <experimental/random>
지정된 범위 내의 임의 정수를 생성함
(함수 템플릿)
스레드별 난수 엔진을 재시드함
(함수)
헤더에 정의됨 <experimental/algorithm>
시퀀스에서 n개의 임의 요소를 선택함
(함수 템플릿)
범위 내 요소들을 무작위로 재정렬함
(함수 템플릿)

기능 테스트 매크로

헤더에 정의됨 <experimental/type_traits>
__cpp_lib_experimental_logical_traits
최소 201511 값은 논리 연산자 타입 특성이 지원됨을 나타냄
(매크로 상수)
__cpp_lib_experimental_detect
최소 201505 값은 검출 관용구가 지원됨을 나타냄
(매크로 상수)
__cpp_lib_experimental_propagate_const
최소 201505 값은 propagate_const 가 지원됨을 나타냄
(매크로 상수)
헤더에 정의됨 <experimental/functional>
__cpp_lib_experimental_not_fn
최소 201406 값은 not_fn 가 지원됨을 나타냄
(매크로 상수)
헤더에 정의됨 <experimental/memory>
__cpp_lib_experimental_observer_ptr
최소 201411 값은 observer_ptr 가 지원됨을 나타냄
(매크로 상수)
헤더에 정의됨 <experimental/array>
__cpp_lib_experimental_make_array
최소 201505 값은 make_array 가 지원됨을 나타냄
(매크로 상수)
헤더에 정의됨 <experimental/iterator>
__cpp_lib_experimental_ostream_joiner
최소 201411 값은 ostream_joiner 가 지원됨을 나타냄
(매크로 상수)
헤더에 정의됨 <experimental/vector>
__cpp_lib_experimental_erase_if
최소 201411 값은 균일 컨테이너 삭제가 지원됨을 나타냄
(매크로 상수)
헤더에 정의됨 <experimental/numeric>
__cpp_lib_experimental_gcd_lcm
최소 201411 값은 gcd lcm 이 지원됨을 나타냄
(매크로 상수)
헤더에 정의됨 <experimental/random>
__cpp_lib_experimental_randint
최소 201511 값은 randint 및 관련 함수들이 지원됨을 나타냄
(매크로 상수)
__cpp_lib_experimental_source_location
최소 201505 값은 source_location 가 지원됨을 나타냄
(매크로 상수)

C++17에 통합됨

라이브러리 펀더멘털 v2의 다음 구성 요소들이 C++17 표준에 채택되었습니다.

헤더에 정의됨 <experimental/type_traits>
void 에 대한 가변 앨리어스 템플릿
(앨리어스 템플릿)
헤더에 정의됨 <experimental/type_traits>
가변 논리 AND 메타함수
(클래스 템플릿)
가변 논리 OR 메타함수
(클래스 템플릿)
논리 NOT 메타함수
(클래스 템플릿)
헤더에 정의됨 <experimental/functional>
보유한 함수 객체의 결과의 보수를 반환하는 함수 객체를 생성함
(함수 템플릿)
헤더에 정의됨 <experimental/numeric>
constexpr 두 정수의 최대공약수를 반환하는 함수 템플릿
(함수 템플릿)
constexpr 두 정수의 최소공배수를 반환하는 함수 템플릿
(함수 템플릿)

C++20에 통합됨

라이브러리 펀더멘털 v2의 다음 구성 요소들이 C++20 표준에 채택되었습니다.

통합 컨테이너 삭제

헤더 파일에 정의됨 <experimental/string>
특정 값과 동일한 모든 요소를 std::basic_string 에서 삭제합니다
(함수 템플릿)
조건자를 만족하는 모든 요소를 std::basic_string 에서 삭제합니다
(함수 템플릿)
헤더 파일에 정의됨 <experimental/deque>
특정 값과 같은 모든 요소를 std::deque 에서 삭제합니다
(함수 템플릿)
조건자를 만족하는 모든 요소를 std::deque 에서 삭제합니다
(함수 템플릿)
헤더 파일에 정의됨 <experimental/vector>
특정 값과 같은 모든 요소를 std::vector 에서 삭제합니다
(함수 템플릿)
조건자를 만족하는 모든 요소를 std::vector 에서 삭제합니다
(함수 템플릿)
헤더 파일에 정의됨 <experimental/forward_list>
특정 값과 동일한 모든 요소를 std::forward_list 에서 삭제합니다
(함수 템플릿)
조건자를 만족하는 모든 요소를 std::forward_list 에서 삭제합니다
(함수 템플릿)
헤더에 정의됨 <experimental/list>
특정 값과 같은 모든 요소를 std::list 에서 삭제합니다
(함수 템플릿)
조건자를 만족하는 모든 요소를 std::list 에서 삭제합니다
(함수 템플릿)
헤더 파일에 정의됨 <experimental/map>
조건자를 만족하는 모든 요소를 std::map 에서 삭제합니다
(함수 템플릿)
조건자를 만족하는 모든 요소를 std::multimap 에서 삭제합니다
(함수 템플릿)
헤더에 정의됨 <experimental/set>
조건자를 만족하는 모든 요소를 std::set 에서 삭제합니다
(함수 템플릿)
조건자를 만족하는 모든 요소를 std::multiset 에서 삭제합니다
(함수 템플릿)
헤더에 정의됨 <experimental/unordered_map>
조건자를 만족하는 모든 요소를 std::unordered_map 에서 삭제합니다
(함수 템플릿)
조건자를 만족하는 모든 요소를 std::unordered_multimap 에서 삭제합니다
(함수 템플릿)
헤더 파일에 정의됨 <experimental/unordered_set>
조건자를 만족하는 모든 요소를 std::unordered_set 에서 삭제합니다
(함수 템플릿)
조건자를 만족하는 모든 요소를 std::unordered_multiset 에서 삭제합니다
(함수 템플릿)

소스 코드 정보 캡처

헤더 파일에 정의됨 <experimental/source_location>
파일 이름, 줄 번호, 함수 이름 등 소스 코드에 대한 정보를 나타내는 클래스
(클래스)

std::array 변환

헤더 파일에 정의됨 <experimental/array>
내장 배열로부터 std::array 객체를 생성함
(함수 템플릿)