문서의 임의 삭제는 제재 대상으로, 문서를 삭제하려면 삭제 토론을 진행해야 합니다. 문서 보기문서 삭제토론 C++ (문단 편집) ==== C++20 ==== ||<:>C++20 모듈 목록|| ||<:> {{{#!wiki style="margin: 0 -10px" {{{#!folding [ 펼치기 · 접기 ] ||<:>{{{}}}||<:>{{{}}}||<:>{{{}}}||<:>{{{}}}|| ||<:>{{{}}}||<:>{{{}}}|| ||<:>{{{}}}||<:>{{{}}}||<:>{{{-1 {{{}}}}}}|| ||<:>{{{}}}||<:>{{{}}}||<:>{{{}}}||<:>{{{}}}||<:>{{{}}}||<:>{{{}}}|| ||<:>{{{}}}||<:>{{{}}}||<:>~~{{{}}}~~||<:>{{{}}}||<:>{{{}}}|| ||<:>{{{}}}||<:>~~{{{}}}~~||<:>{{{}}}||<:>{{{}}}|| ||<:>{{{}}}||<:>{{{}}}||<:>{{{}}}||<:>{{{}}}||<:>{{{}}}|| ||<:>{{{}}}||<:>{{{}}}||<:>{{{-1 {{{}}}}}}||<:>{{{}}}|| ||<:>{{{}}}||<:>{{{}}}||<:>{{{}}}||<:>{{{}}}||<:>{{{}}}|| ||<:>{{{}}}||<:>{{{}}}||<:>{{{}}}||<:>{{{}}}||<:>{{{}}}|| ||<:>{{{}}}||<:>{{{}}}|| ||<:>{{{}}}||<:>{{{}}}||<:>{{{}}}||<:>{{{}}}||<:>{{{}}}|| ||<:>{{{}}}||<:>{{{}}}||<:>{{{-1 {{{}}}}}}||<:>{{{-1 {{{}}}}}}|| ||<:>{{{}}}||<:>{{{}}}|| ||<:>{{{}}}||<:>{{{}}}||<:>{{{}}}||<:>{{{}}}||<:>{{{}}}|| ||<:>{{{}}}||<:>{{{}}}||<:>{{{-1 {{{}}} }}}||<:>{{{-1 {{{}}} }}}||<:>{{{}}}|| ||<:>{{{}}}||<:>{{{}}}||<:>{{{}}}||<:>{{{}}}||<:>{{{}}}|| ||<:>{{{-1 {{{}}}}}}||<:>{{{}}}||<:>{{{}}}||<:>{{{}}}||<:>{{{}}}|| }}} }}} || [[2020년]]에 최종 승인된 C++20은 C++11, C++14, C++17에 이은 주요 버전이다. 비동기 프로그래밍을 지원하기 위한 코루틴[* 언어 차원에서 지원하기 때문에, 비동기 프로그래밍을 위해 별도의 라이브러리가 필요하지 않게 된다.], 컴파일 속도 향상을 위한 소스 파일 모듈화[* 소스 파일이 각각의 헤더 파일을 일일이 포함하는 대신, 미리 컴파일된 모듈을 사용함으로써 컴파일 속도가 크게 향상된다. 별도의 시범 사양으로도 공개되어 있기 때문에, [[Visual Studio]]의 C++ 컴파일러와 [[Clang]] 컴파일러에서 이미 시범적으로 지원하고 있다.], 템플릿에 제약 조건을 추가하기 위한 컨셉트[* 현존하는 템플릿 트릭의 대다수를 대체할 수 있으므로 코드가 간결해지고 가독성이 증가한다.] 등 [[https://ko.wikipedia.org/wiki/C%2B%2B20|다양한 기능들이 추가될 예정이다.]] 그 외에 추후 표준에[* 3년 주기를 따를 경우 C++23이 된다.] 추가될 수 있는 리플렉션과 네트워크 라이브러리--네트워크 라이브러리인 asio는 또 밀렸다.--, 2D GUI 라이브러리, 트랜잭셔널 메모리에 대한 [[https://en.cppreference.com/w/cpp/experimental|시범 사양도 별도로 공개되어 있다.]] 놀라운 점은 C++20에 추가된 기능들과 C++20에 다 반영되지 못한 대신 다음 C++ 표준에 포함될 예정인 기능들이 대부분 C++TR2 제안서에 이미 언급되어 있던 사양이라는 특징이 있다. 표준화로서 최소 15년만에 빛을 발하게 된 셈. 1. 모듈 지원. 표준 라이브러리는 개별 헤더만 지원함 1. {{{}}} {{{concept}}}를 활용한 템플릿 제약조건 라이브러리 1. {{{}}} 기존의 {{{>=}}}, {{{>}}}, {{{<}}}, {{{<=}}}를 대체하는 {{{<=>}}} 연산자 지원 라이브러리 [* [[C\#]]의 CompareTo()와 같다.] 1. {{{}}} 수학 상수 1. {{{}}} C의 코드 정보 매크로를 대체하기 위한 라이브러리 1. {{{}}} 문자열 형식화 라이브러리 1. {{{}}} 두가지 목적이 있다. {{{std::ranges}}}에서 컨테이너 오류를 원천 차단하기 위해 제약조건을 꼼꼼하게 달아서 {{{}}} 헤더를 대체하는 목적, 그리고 {{{std::views}}}의 범위 대리자 클래스를 통해 동적할당 없이 일반화된 범위[* {{{begin(); end();}}}를 지원하는 클래스] 연산을 지원하는 것. 오랜만에 나온 제대로 된 일반화 프로그래밍 라이브러리이기도 하다. 1. {{{}}} {{{std::string_view}}}와 같이 동적 할당없는 연속된 메모리 보기를 지원하는 클래스 1. {{{}}} [[코루틴]] [[프레임워크]] [* [[라이브러리]]라고 부르기에는 어폐가 있다.] 1. {{{}}} 접근하는 스레드의 수를 제한하는 동기화 클래스 1. {{{}}} 접근하는 스레드를 묶음 단위로 관리하고, 접근하는 스레드를 대기 상태로 만들어 최대 횟수에 도달하면 재시작하는 동기화 클래스 1. {{{}}} 횟수 세기 기반의 1회용 동기화 클래스 1. {{{}}} [[뮤텍스]]를 사용하는 스트림 인터페이스 라이브러리 1. 부동 소수점에 대해 원자 클래스 {{{std::atomic}}} 지원 1. 노가다를 줄여주는 {{{std::remove_cvref}}} 1. '''컴파일 시간에 힙 메모리 할당과 소멸이 가능함''' 1. {{{constexpr std::allocator}}}, {{{std::construct_at}}}, {{{std::destroy}}}, {{{std::destroy_at}}} 1. {{{constexpr std::vector}}} 1. {{{constexpr std::string}}} 1. {{{std::is_constant_evaluated();}}} 함수를 통해 현재 컴파일 시점인지 아닌지 알 수 있음 1. 가상, 추상 함수도 {{{constexpr}}}이 될 수 있음 1. 소멸자도 {{{constexpr}}}이 될 수 있음. 기본 생성자, 소멸자가 모두 {{{constexpr}}}라면 '''자명 (Trivial)'''한 클래스가 되고 {{{consteval}}} 함수의 반환 값, 각종 상수 평가식, 그리고 템플릿 매개변수로 사용할 수 있음 1. {{{constexpr}}} 함수에 {{{try}}} 문을 사용할 수 있음. 만약 상수 시간에 오류가 발생하면 즉시 알 수 있음 1. {{{consteval}}}로 이젠 모든 것이 다 되는 {{{constexpr}}} 특유의 모호성을 제거하고 반드시 상수 시간에 평가하도록 설정할 수 있음 1. {{{constinit}}}를 통해 {{{static}}} 변수를 컴파일 시간에 초기화할 수 있음 1. 함수를 정의할 때 {{{noexcept(상수 bool 평가식)}}}와 같이 선택적으로 {{{noexcept}}}를 지정할 수 있음 1. {{{}}}에서 년월일, 요일, 주말, 날짜, C 라이브러리를 대체하는 시간대 권역 지원 1. {{{}}}에서 소멸자에서 자동으로 {{{join()}}}을 실행하는 {{{std::jthread}}} 클래스가 추가됨. 그리고 {{{std::stop_token}}}, {{{std::stop_source}}}를 이용해 스레드 진행을 원격으로 멈출 수 있음 [* 다른 언어에서 보이는 Cancellation\*류의 클래스다.] 1. 새로운 특성 {{{[[no_unique_address]]}}} 1. 새로운 특성 {{{[[likely]]}}}, {{{[[unlikely]]}}}저장 버튼을 클릭하면 당신이 기여한 내용을 CC-BY-NC-SA 2.0 KR으로 배포하고,기여한 문서에 대한 하이퍼링크나 URL을 이용하여 저작자 표시를 하는 것으로 충분하다는 데 동의하는 것입니다.이 동의는 철회할 수 없습니다.캡챠저장미리보기