C++20 리서치 - 소개[1]
C++20 관련 시리즈입니다. C++20 에 추가된 다양한 문법과 라이브러리를 정리합니다. 본 포스팅에서는 간략한 특징을 소개합니다.
기본 특징
-
4가지 큰 흐름 concept, coruntine, module, range
-
C++20 표준 확정
-
아직은 모든 컴파일러에서 표준의 모든 기능을 지원하지 않음
-
C++ 11/14/17을 알아야 정확히 이해 가능한 내용 다수 포함
-
컴파일러 vs cl 컴파일러 19.28 이상 버전 권장
-
프로젝트 속성 컴파일러 옵션 /std:c++latest 추가 필요
신규 키워드
내 용 | 키워드 이름 |
---|---|
Concept 문법 지원 | concept, requires |
Corutine 문법 지원 | co_wait, co_return, co_yield |
Module 문법 지원 | module, import, export |
상수성 지원 | constinit, consteval |
UTF-8 문자열 지원 | char8_t |
신규 헤더
내 용 | 헤더 이름 |
---|---|
Concepts | 〈concepts〉 |
Coroutines | 〈coroutine〉 |
utility | 〈compare>, 〈version〉, 〈source_location〉 |
string | 〈format〉 |
container | 〈span〉 |
Ranges | 〈ranges〉 |
numeric | 〈bit〉, 〈numbers〉 〈syncstream〉 |
thread | 〈stop_token〉, 〈semaphore〉, 〈latch〉, 〈barrier〉 |
feature test macro
컴파일러가 특정 문법 또는 특정 라이브러리 지원하는지 확인 가능
#ifdef __cpp_concepts // 언어 특징 지원 여부
std::cout << "concpets 사용 가능 << std::endl;
#endif
#ifdef __cpp_lib_chrono // 라이브러리 특징 지원 여부
std::cout << "chrono 지원" << std::endl;
std::cout << "version(버전은 년도로 정의)" : << __cpp_lib_chrono << std::endl;
#endif