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

더 많은 C++20 관련 정보