(Modern C++ : 17~) C++20 시작하기

Posted by : at

Category : Cpp


커맨드로 빌드

$ cl source.cpp /std:c++latest


  • C++20에 추가된 새로운 키워드
    • Concept 문법 : concept, requires
    • Coroutine 문법 : co_await, co_return, co_yield
    • Module 문법 : module, import, export
    • 상수성 지원 : constinit, consteval
    • UTF-8 문자 : char8_t

Example

#include <iostream>
#include <numbers>  // c++20 최신 헤더

int main()
{
  std::cout << std::numbers::pi << std::endl;
  std::cout << std::numbers::e << std::endl;
  std::cout << std::numbers::sqrt2 << std::endl;
}

굳이 define하지 않아도 된다.


feature test macro

  • 현재 사용중인 컴파일러가 특정 문법 또는 라이브러리 지원여부를 확인가능
#include <iostream>
#include <span>
#include <chrono>

int main()
{
    // 언어 특징 지원 여부 조사
#ifdef __cpp_concepts
    // concept이라는 문법을 지원
    std::cout << "support concepts" << std::endl;
#endif

#ifdef __cpp_modules
    // modules이라는 문법을 지원
    std::cout << "support modules" << std::endl;
#endif

    // 라이브러리 특정 지원 여부 조사 (헤더필요)
#ifdef __cpp_lib_span
    std::cout << "support span lib" << "std::endl";
#endif

#ifdef __cpp_lib_chrono 
    std::cout << "support chrono lib" << std::endl;
    std::cout << "chrono version : " << __cpp_lib_chrono << std::endl;
    // cout해보면 버전정보를 의미한다.
#endif
}

About Taehyung Kim

안녕하세요? 8년차 현업 C++ 개발자 김태형이라고 합니다. 😁 C/C++을 사랑하며 다양한 사람과의 협업을 즐깁니다. ☕ 꾸준한 자기개발을 미덕이라 생각하며 노력중이며, 제가 얻은 지식을 홈페이지에 정리 중입니다. 좀 더 상세한 제 이력서 혹은 Private 프로젝트 접근 권한을 원하신다면 메일주세요. 😎

Star
Useful Links