컨셉 라이브러리 (C++20)
cppreference.com
< cpp
컨셉 라이브러리는 컴파일할 때 템플릿 인자의 유효성 확인을 수행하고 타입의 특성에 기반한 함수 분류 생성에 사용할 수 있는 기초적인 컨셉의 정의를 제공합니다. 이 컨셉들은 프로그램에 동등한 추론을 위한 기반을 제공합니다.
표준 라이브러리의 대부분의 컨셉은 구문 및 의미론적 요구 사항을 강제합니다. 표준 컨셉은 구문 요구사항을 충족하고, 충족 상태에서 의미론적 요구 사항을 (어떤 것이라도) 갖추는 경우 모델화되었다고 할 수 있습니다.
일반적으로, 컴파일러에서는 구문적인 요구사항을 검사할 수 있습니다. 만약 프로그램의 타당성이나 의미가 템플릿 인수의 시퀀스가 컨셉을 모델링하는지 여부와 개념이 충족되지만 모델링되지 않았는지에 달려 있거나, 사용할 때 의미론적 요구사항을 맞추지 못한다면 잘못된 프로그램입니다 no diagnostic required.
Defined in namespace std | ||
핵심 언어 컨셉 | ||
<concepts> 헤더에 정의됨. | ||
(C++20) | 타입이 다른 타입과 동일하다는 것을 명시합니다 (concept) | |
(C++20) | 타입이 다른 타입을 상속하여 생성되었음을 명시합니다 (concept) | |
(C++20) | 타입이 암시적으로 다른 타입으로 변환될 수 있음을 명시합니다 (concept) | |
(C++20) | 두 개의 타입이 공통의 참조 타입을 공유함을 명시합니다 (concept) | |
(C++20) | 두 개의 타입이 공통 타입을 공유함을 명시합니다 (concept) | |
(C++20) | 타입이 정수형(integral) 타입임을 명시합니다 (concept) | |
(C++20) | 타입이 부호있는 정수형(integral) 타입임을 명시합니다 (concept) | |
(C++20) | 타입이 부호없는 정수형(integral) 타입임을 명시합니다 (concept) | |
(C++20) | 타입이 부동소수형(floating-point) 타입임을 명시합니다 (concept) | |
(C++20) | 타입이 다른 타입에서 할당 가능함을 명시합니다 (concept) | |
(C++20) | 터압아 교체(swap) 가능하거나 두 타입이 서로 교체(swap) 가능함을 명시합니다 (concept) | |
(C++20) | 타입의 객체가 소멸 가능함을 명시합니다 (concept) | |
(C++20) | 해당 타입의 변수가 인자 타입의 집합으로부터 생성되거나 집합으로 묶일 수 있음을 명시합니다 (concept) | |
(C++20) | 해당 타입의 객체가 기본 생성(default construct)이 가능함을 명시합니다 (concept) | |
(C++20) | 타입의 객체가 이동 생성이 가능함을 명시합니다 (concept) | |
(C++20) | 타입의 객체가 복사 생성되었거나 이동 생성되었음을 명시합니다 (concept) | |
비교 컨셉 | ||
<concepts> 헤더에 정의됨. | ||
(C++20) | 타입이 Boolean 컨텍스트로 사용 가능함을 명시합니다 (exposition-only concept) | |
연산자 == 가 등가 관계임을 명시합니다 (concept) | ||
타입에 대한 비교 연산자가 순서에 따른 값을 만들어낼 수 있음을 명시합니다 (concept) | ||
<compare> 헤더에 정의됨. | ||
연산자 <=> 가 주어진 타입에 대해 일관된 결과값을 만들어냄을 명시합니다 (concept) | ||
객체 컨셉 | ||
<concepts> 헤더에 정의됨. | ||
(C++20) | 타입의 객체가 이동 가능하거나 교체(swap) 가능함을 명시합니다 (concept) | |
(C++20) | 타입의 객체가 복사, 이동, 교체(swap)가 가능함을 명시합니다 (concept) | |
(C++20) | 타입의 객체가 복사, 이동, 교체(swap), 기본 생성이 가능함을 명시합니다 (concept) | |
(C++20) | 객체가 규칙적, 다시 말해, semiregular 이고 equality_comparable 함을 명시합니다 (concept) | |
호출 가능 컨셉 | ||
<concepts> 헤더에 정의됨. | ||
(C++20) | 호출 가능한 타입이 주어진 인자(argument)종류의 집합으로 호출될 수 있음을 명시합니다 (concept) | |
(C++20) | 호출 가능한 타입이 Boolean 서술임을 명시합니다 (concept) | |
(C++20) | 호출 가능한 타입이 이진(binary) 관계임을 명시합니다 (concept) | |
(C++20) | relation 이 등가 관계임을 명시합니다 (concept) | |
(C++20) | relation 이 엄격히 약한 순서(strict weak ordering) 관계에 놓여 있음을 명시합니다 (concept) |
추가 컨셉은 반복자 라이브러리, 알고리즘 라이브러리, 범위 라이브러리에서 찾을 수 있습니다.