상위 질문
타임라인
채팅
관점

C++23

위키백과, 무료 백과사전

Remove ads

C++23, 공식적으로 ISO/IEC 14882:2024,[1]C++20에 이어지는 C++ 프로그래밍 언어의 현재 개방형 표준이다. 이 버전의 최종 초안은 N4950이다.[2][3]

2020년 2월, 프라하에서 열린 C++20 최종 회의에서 C++23에 대한 전체 계획이 채택되었다.[4][5] C++23의 계획된 기능은 코루틴을 위한 라이브러리 지원, 모듈화된 표준 라이브러리, 실행자(executor), 네트워킹이었다.

C++23에 초점을 맞춘 첫 WG21 회의는 2020년 6월 초 바르나에서 열릴 예정이었으나, 코로나19 범유행으로 인해 취소되었다.[6][7] 2020년 11월 뉴욕 회의[8][7]와 2021년 2월 코나(Kona) 회의[8]도 마찬가지였다. 2022년 11월까지 모든 회의는 가상으로 진행되었고, 2022년 11월 회의부터 2023년 2월 최종 회의까지는 하이브리드 형식으로 진행되었다.[8] 이 표준은 2023년 2월 이서콰에서 열린 하이브리드 회의에서 WG21에 의해 기술적으로 최종 확정되었다.[9]

Remove ads

현대적인 "Hello, world" 예제

작업 초안에 많은 라이브러리 변경 사항이 적용된 후, 새로운 "Hello, world" 프로그램은 다음과 같다.

import std;

int main() {
    std::println("Hello, world!");
}

기능

요약
관점

C++23에 승인된 변경 사항은 다음과 같다.

언어

  • 명시적 this 객체 매개변수[10]
  • if consteval[11]
  • 다차원 첨자 연산자[12]
  • 정적 호출 및 첨자 연산자와 정적 람다[13][14]
  • 암시적 이동 단순화[15]
  • auto(x)auto{x}[16]
  • 새로운 전처리기 지시문:
  • 범위 기반 for 루프에서 일부 임시 변수의 수명 연장[19]
  • 새로운 표준 속성 [[assume(expression)]][20]
  • 상속된 생성자로부터의 클래스 템플릿 인자 추론[21]
  • 복합 문의 끝에 있는 레이블[22]
  • 초기화 문 내의 별칭 선언[23]
  • std::size_t 및 해당 부호 있는 타입에 대한 리터럴 접미사[24]
  • 리터럴을 포함한 확장 부동 소수점 타입 (조건부 지원)[25]
  • 널리 람다 표현식의 선택적 ()[26]
  • 람다 표현식의 속성[27]
  • constexpr 변경 사항:
    • constexpr 함수 내의 비리터럴 변수, 레이블 및 goto[28]
    • constexpr 함수 내에서 상수 표현식으로 사용 가능한 staticthread_local 변수 허용[29]
    • constexpr 함수는 반환 타입과 매개변수 타입이 리터럴 타입일 필요가 없다.
    • 핵심 상수 표현식의 요구 사항을 만족하는 호출이 없는 constexpr 함수를 작성하는 것이 이제 가능하다.[30]
  • static_assertif constexpr에서 bool로의 컨텍스트적 축소 변환[31]
  • 라인 연결 전 공백 제거[32]
  • 선언 순서 레이아웃 의무화[33]
  • 구분된 이스케이프 시퀀스[34]
  • 이름 있는 유니버설 문자 이스케이프[35]
  • 텍스트 인코딩 변경 사항:
    • 이동 가능한 소스 파일 인코딩으로 UTF-8 지원[36]
    • 일관된 문자 리터럴 인코딩[37]
    • 문자 집합 및 인코딩[38]
  • this와 같은 일부 키워드에 새로운 의미 추가..[39]

라이브러리

표준 라이브러리 모듈 지원

  • 표준 라이브러리 모듈 stdstd.compat[40]

코루틴 라이브러리 지원

  • 범위에 대한 동기식 코루틴 std::generator[41]

일반 유틸리티 지원

  • 결과 타입 std::expected[42]
  • std::optional[43]std::expected[44]을 위한 모나드 연산
  • enum의 기본 값을 가져오는 유틸리티 함수 std::to_underlying[45]
  • 이동 전용 호출 가능 래퍼 std::move_only_function[46]
  • std::forward_like[47]
  • std::invoke_r[48]
  • std::bind_back[49]
  • std::byteswap[50]
  • std::unreachable: 접근할 수 없는 코드를 표시하는 함수[51]
  • std::tuple을 다른 튜플 유사 객체와 호환 가능하게 만들었다.[52]
  • 참조 타입을 반환하는 std::reference_wrapper에 대한 std::basic_common_reference 특수화 추가[53]
  • std::pair의 전달 생성자에 대한 기본 인자 추가[54]

컴파일 시간 지원

  • constexpr 지원:
    • std::type_info::operator==[55]
    • std::bitset[56]
    • std::unique_ptr[57]
    • 일부 <cmath> 함수[58]
    • std::to_charsstd::from_chars의 정수 오버로드[59]
  • 메타프로그래밍 유틸리티:
    • 타입 트레잇 std::is_scoped_enum,[60] std::is_implicit_lifetime,[61] std::reference_constructs_from_temporary, 및 std::reference_converts_from_temporary.[62]
  • 비교 개념에 대한 이동 전용 타입 지원 추가[63]

이터레이터, 범위 및 알고리즘 지원

  • 새로운 범위 변환 함수 std::ranges::to[64]
  • 새로운 제약이 있는 범위 알고리즘:
    • std::ranges::starts_with
    • std::ranges::ends_with[65]
    • std::ranges::contains
    • std::ranges::contains_subrange[66]
    • std::ranges::find_last 및 기타 변형[67]
    • iota, shift_leftshift_right의 범위화된 버전[68]
    • 범위 폴드 알고리즘[69]
  • 새로운 std::ranges::range_adaptor_closure, 사용자 정의 범위 어댑터 클로저를 정의하기 위한 헬퍼[49]
  • 새로운 범위 어댑터:
    • std::views::zip 및 기타 변형
    • std::views::adjacent 및 기타 변형[70]
    • std::views::join_with[71]
    • std::views::slide
    • std::views::chunk[72]
    • std::views::chunk_by[73]
    • std::views::as_rvalue[74]
    • std::views::as_const[75]
    • std::views::repeat[76]
    • std::views::stride[77]
    • std::views::cartesian_product[78]
    • std::views::enumerate[79]
  • 상수 이터레이터, 센티넬 및 범위를 수정하여 std::ranges::cbegin 및 기타 유사 유틸리티가 얕은 상수 뷰(예: std::span)의 경우에도 상수 이터레이터를 반환하도록 완전히 보장한다.[75]
  • 비범위 알고리즘의 입력으로 범위 이터레이터[80]
  • 이동 전용 타입을 허용하도록 범위 어댑터 완화[81]
  • 일부 뷰의 다중 매개변수 생성자를 explicit으로 만들었다.[82]

메모리 관리 지원

  • C 상호 운용성을 위한 std::out_ptrstd::inout_ptr[83]
  • std::allocate_at_leaststd::allocator::allocate_at_least[84]
  • 암시적 수명 타입에 대한 명시적 수명 관리 함수 std::start_lifetime_as[85]
  • std::allocator_traits의 사용자 특수화 금지[86]

문자열 및 텍스트 처리 지원

  • 새로운 멤버 함수 및 문자열 타입의 변경 사항:
    • std::basic_string_view::containsstd::basic_string::contains[87]
    • std::basic_stringstd::basic_string_view에 대한 nullptr로부터의 생성 비활성화[88]
    • std::basic_string_view에 대한 명시적 범위 생성자[89]
    • std::basic_string::resize_and_overwrite[90]
    • 효율적인 슬라이싱을 위한 std::basic_string::substr의 rvalue 참조 오버로드[91]
  • 범위, 튜플, 문자 및 문자열의 이스케이프된 표현, std::thread::id 및 스택 트레이스 포매팅.[92][93][94]

진단 지원

  • 스택 트레이스 라이브러리[95]

I/O 지원

  • 새로운 헤더 <print>에서 가져온 서식 있는 출력 함수 std::printstd::println[96]
  • 새로운 헤더 <spanstream>에서 가져온 spanstream 라이브러리(std::span 기반 문자열 스트림)[97]
  • std::fstream에서 독점 모드 지원[98]
  • std::basic_ostream::operator<<(const volatile void*)[99]

컨테이너 지원

  • 다차원-스팬 std::mdspan[100][101][102][103]
  • 다른 호환 가능한 범위로부터의 컨테이너 생성 가능성 및 할당 가능성[64]
  • 평면 집합 및 평면 맵 컨테이너 어댑터[104][105]
  • 컨테이너 추론 가이드에서 할당자를 위한 비추론 컨텍스트[106]
  • 연관 컨테이너에 대한 이기종 삭제 오버로드[107]
  • 스택 및 큐에서 이터레이터 쌍 생성 허용[108]
  • std::spanstd::basic_string_view가 사소하게 복사 가능해야 함을 요구[109]

C 호환성 지원

  • 새로운 헤더 <stdatomic.h>[110]

언어 결함 보고서

  • 유니코드 표준 부록 31을 사용하는 C++ 식별자 구문[111]
  • 중복 속성 허용[112]
  • 람다 후행 반환 타입의 범위 변경[113]
  • 오버로드된 비교 연산자를 덜 파괴적인 변경으로 만들기[114]
  • Volatile 복합 할당의 폐기 해제[115][116]
  • char8_t의 호환성 및 이식성 문제 해결[117]
  • 기존 관행에 맞춰 wchar_t에 대한 요구 사항 완화[118]
  • 상수 표현식에서 this 또는 알 수 없는 출처의 일부 포인터 및 참조 허용[119]
  • 즉시 확장 함수를 즉시 함수로 승격[120]
  • 인스턴스화되지 않은 템플릿 컨텍스트에서 static_assert(false) 허용

라이브러리 결함 보고서

  • 범위 라이브러리의 변경 사항:
    • 조건부로 빌려온 범위[121]
    • 입력 범위 어댑터 및 std::counted_iterator 수정[122]
    • std::ranges::join_view에 대한 제약 완화[123]
    • std::ranges::split_viewstd::ranges::lazy_split_view로 이름 변경 및 새로운 split_view[124]
    • 개념 std::ranges::view에서 std::default_initializable 제약 조건 제거[125]
    • 소유권을 가진 뷰와 새로운 std::ranges::owning_view[126]
    • std::ranges::istream_view 수정[127]
  • 텍스트 포매팅 라이브러리 변경 사항:
    • std::basic_format_string[128]
    • 컴파일 시간 형식 문자열 검사
    • std::format_to의 이진 코드 크기 감소[129]
    • chrono 포매터에서 로케일 처리 문제 해결[130]
    • 너비 추정 개선[131]std::format의 채움 문자 허용[132]
    • 비상수 포맷 가능 타입 허용을 위한 형식 인자에서 전달 참조 사용[133]
  • 완전히 constexprstd::variantstd::optional[134]
  • std::visit에서 std::variant에서 파생된 타입 지원[135]

제거된 기능 및 폐기

제거된 기능:

  • 가비지 컬렉션 지원 및 (엄격한) 포인터 안전성[136] (즉, 완화된 포인터 안전성만 의존 가능[137]). 이 최소한의 가비지 컬렉션 지원(및 이를 위해 필요한 포인터 안전성)은 C++11에 추가되었지만, 어떤 컴파일러도 이를 지원한 적이 없으므로 C++23에서 제거되었다.[138] 그러나 이것이 Boehm GC와 같이 C++와 함께 많은 GC 구현이 사용되지 않았다는 것을 의미하지는 않으며, 디버그 모드에서 누수 감지를 위해 (또한 누수 감지에도) 사용될 수 있으며, 이러한 GC는 다른 언어에서 사용하기 위해 종종 C++로 구현된다.
  • 혼합 와이드 문자열 리터럴 연결.[139]
  • 인코딩 불가능한 와이드 문자 리터럴 및 다중 문자 와이드 문자 리터럴.[140]

폐기된 기능:

  • std::aligned_storagestd::aligned_union[141]
  • std::numeric_limits::has_denorm[142]

복원된 폐기된 기능:

  • 첨자 표현식에서 쉼표 연산자 사용은 더 이상 폐기되지 않았지만, 오버로드 가능한 n-adic operator[]를 지원하도록 의미가 변경되었다.
  • C 헤더 (C와의 호환성을 위한 해당 <*.h> 헤더)
Remove ads

기술 사양으로 발행됨

컴파일러 지원

  • 클랭은 2021년 버전 13부터 2024년 버전 18까지 C++23 부분 지원을 점진적으로 추가했으며, 옵션 -std=c++23을 통해 사용할 수 있다.[144]
  • GCC는 2021년 버전 11에서 옵션 -std=c++2b 또는 -std=c++23을 통해 C++23의 부분적, 실험적 지원을 추가했다. 또한 실험적인 C++23 지원 외에 GNU 확장을 활성화하는 옵션 -std=gnu++2b도 있다.[145]

역사

요약
관점

대면 WG21 회의가 없는 상황에서, 다음 변경 사항들은 여러 가상 WG21 회의 후 적용되었으며, 여기서 여론조사(straw poll)를 통해 승인되었다.

2020년 11월

2020년 11월 9일 가상 WG21 회의 후 다음 사항들이 추가되었으며, 여론조사를 통해 승인되었다.[146]

  • std::size_t 및 해당 부호 있는 타입에 대한 리터럴 접미사
  • 주어진 부분 문자열 또는 문자를 문자열이 포함하는지 확인하는 std::basic_stringstd::basic_string_view에 대한 멤버 함수 contains
  • Boost.Stacktrace를 기반으로 하는 스택 트레이스 라이브러리 (<stacktrace>)
  • 타입 트레잇 std::is_scoped_enum
  • C 원자(atomic)와의 상호 운용성을 위한 헤더 <stdatomic.h>

2021년 2월

2021년 2월 22일 가상 WG21 회의 후, 다음 기능들이 추가되었으며 여론조사를 통해 승인되었다.[147]

  • 람다 표현식에서 불필요한 빈 매개변수 목록 () 제거.
  • 입력 범위 어댑터 및 counted_iterator 수정.
  • time_point::clock에 대한 요구 사항 완화.[148]
  • std::variant에서 파생된 클래스에 대한 std::visit.
  • 잠금 가능 객체를 잠근다.[149]
  • 조건부로 빌려온 범위.
  • std::to_underlying.

2021년 6월

2021년 6월에 열린 여름 ISO C++ 표준 본회의 가상 회의 후, 새로운 기능과 결함 보고서가 여론조사를 통해 승인되었다.[150]

  • Consteval if (if consteval).
  • bool로의 컨텍스트적 축소 변환.
  • 중복 속성 허용.
  • std::span 기반 문자열 스트림 (<spanstream>).
  • std::out_ptr()std::inout_ptr().
  • std::optional, std::variantstd::type_info::operator==에 대한 constexpr.
  • std::stack (스택) 및 std::queue ()에 대한 이터레이터 쌍 생성자.
  • 범위 라이브러리의 몇 가지 변경 사항:
    • 임의 범위에 대한 일반화된 starts_withends_with.
    • split_viewlazy_split_view로 이름 변경 및 새로운 split_view.
    • join_view에 대한 제약 완화.
    • 개념 view에서 default_initializable 제약 조건 제거.
    • std::basic_string_view에 대한 범위 생성자.
  • nullptr로부터의 std::basic_stringstd::basic_string_view 생성 금지.
  • std::invoke_r.
  • std::format 개선.
  • std::pair의 전달 생성자에 기본 인자 추가.

2021년 10월

2021년 10월에 열린 2021년 가을 ISO C++ 표준 본회의 가상 회의 후, 새로운 기능과 결함 보고서가 여론조사를 통해 승인되었다.[151]

  • 비리터럴 변수, 레이블 및 gotoconstexpr 함수에 허용되었지만, 컴파일 시간에 평가하는 것은 여전히 잘못된 형식이다.
  • 명시적 this 객체 매개변수.
  • 문자 집합 및 인코딩 변경 사항.
  • 새로운 전처리기: #elifdef#elifndef. 두 지시문은 C23 (C 언어 업데이트) 및 GCC 12에 추가되었다.[152]
  • 초기화 문에서 별칭 선언 허용.
  • 다차원 첨자 연산자 오버로드 (예: arr[1, 2]).
  • 언어 내 decay copy: auto(x) 또는 autox}.
  • 텍스트 포매팅 라이브러리 변경 사항:
    • chrono 포매터에서 로케일 처리 문제 해결.
    • std::generator 유사 타입을 허용하기 위해 형식 인자에서 전달 참조 사용.
  • std::pmr::polymorphic_allocator와 동등한 타입 별칭 std::pmr::stacktrace 추가.[153]
  • 범위 라이브러리 변경 사항:
    • 뷰의 정제된 정의.
    • 함수 템플릿 std::ranges::istream_view를 별칭 템플릿 std::ranges::istream_view, std::ranges::wistream_view 및 사용자 정의 지점 객체 std::views::istream으로 대체.
    • zip 범위 어댑터 패밀리:
      • zip_view
      • zip_transform_view
      • adjacent_view (및 std::views::pairwisestd::views::adjacent<2>와 동등)
      • adjacent_transform_view (및 std::views::pairwise_transformstd::views::adjacent_transform<2>와 동등)
  • std::move_only_function.
  • std::optional에 대한 모나드 연산.
  • 멤버 함수 템플릿 std::basic_string::resize_and_overwrite.
  • volatile 포인터 출력 (volatile T*).
  • std::byteswap.
  • 연관 컨테이너에 대한 이기종 삭제 오버로드.
  • std::spanstd::basic_string_view의 모든 특수화는 사소하게 복사 가능하다.
  • std::exchange에 조건부 noexcept 사양 추가.[154]
  • 정수 클래스 타입의 사양 및 사용 개편.[155]
  • C 헤더 명확화. "헤더는 C++로만 유효해야 하는 코드에서는 유용하지 않다. 따라서 C 헤더는 C++ 표준 라이브러리에서 완전히 지원되고 폐기되지 않은 부분으로 제공되어야 하지만, 다국어 상호 운용 코드(polyglot interoperability code)가 아닌 코드에서는 사용이 권장되지 않는다. [..] 이 제안은 C 헤더를 더 이상 폐기되지 않도록 하여 향후 제거될 formal threat를 없앤다. 순수 C++ 코드에서 C 헤더 사용을 자제하도록 하는 실질적인 권장 사항은 이제 규범적 권장 사항으로 명시적으로 명시된다."[156]

2022년 2월

2022년 2월 7일 가상 WG21 회의 후, 다음 기능들이 추가되었으며 여론조사를 통해 승인되었다.[157]

  • 람다의 함수 호출 연산자에 속성 허용
  • std::expected
  • cmathcstdlib에 대한 constexpr
  • 접근할 수 없는 코드를 표시하는 함수
  • ranges::to
  • 임시 객체에 대한 참조 바인딩을 감지하는 타입 트레잇
  • std::unique_ptrconstexpr로 만들기
  • 사용자 정의 범위 어댑터에 대한 파이프 지원
  • ranges::iota, ranges::shift_leftranges::shift_right
  • views::join_with
  • 윈도잉 범위 어댑터: views::chunkviews::slide
  • views::chunk_by

2022년 7월

2022년 7월 25일 가상 WG21 회의 후, 다음 기능 및 결함 보고서가 추가되었으며 여론조사를 통해 승인되었다.[158]

  • 표현식에서 동일성 재작성을 덜 파괴적인 변경으로 만들었다.
  • volatile 변수에 대한 비트별 할당 폐기 해제를 되돌렸다.
  • #warning 전처리기 지시어를 추가했다.
  • 인코딩 불가능한 와이드 문자 리터럴과 다중 문자 와이드 문자 리터럴을 제거했다.
  • 레이블이 복합 문의 끝에 나타날 수 있도록 허용했다.
  • 8진수 및 16진수에 대한 중괄호로 구분된 이스케이프 시퀀스와 유니버설 문자 이름을 추가했다.
  • constexpr 함수가 상수 표현식이 될 수 없도록 허용했다.
  • C++20의 일부 암시적 이동 규칙을 단순화하고 rvalue 참조를 반환할 때 암시적 이동을 허용했다.
  • 이름으로 유니코드 문자를 지정하는 방법을 추가했다. 예를 들어, U'\N{LATIN CAPITAL LETTER A WITH MACRON}' // Equivalent to U'\u0100'
  • operator() 및 람다가 static이 될 수 있도록 허용했다.
  • this 포인터와 알 수 없는 출처의 참조가 상수 표현식에 나타날 수 있도록 허용했다.
  • 세 가지 표준 부동 소수점 타입 외에 확장 부동 소수점 타입을 정의할 수 있도록 구현을 허용했다. 헤더 <stdfloat>를 통해 접근 가능한 이러한 확장 타입에 대한 타입 별칭 std::float16_t, std::float32_t, std::float64_t, std::float128_t, std::bfloat16_t와 해당 리터럴 접미사 f16 f32 f64 f128 bf16 또는 F16 F32 F64 F128 BF16을 추가하고, float를 인수로 받는 다양한 표준 라이브러리 함수에 오버로드를 추가했다.
  • 컴파일러가 제공된 표현식이 참이라고 가정하여 최적화를 허용하는 [[assume(expression)]] 속성을 추가했다.
  • 소스 파일의 이동 가능한 인코딩을 제공하기 위해 UTF-8 소스 파일 지원을 의무화했다.
  • charunsigned char 배열을 UTF-8 문자열 리터럴로 초기화할 수 있도록 허용했다.
  • 확장 문자 집합의 모든 문자를 인코딩할 수 있다는 wchar_t에 대한 요구 사항을 제거하여, UTF-16을 와이드 문자열 리터럴에 사용할 수 있도록 효과적으로 허용했다.
  • std::span과 유사한 다차원 배열 뷰인 std::mdspan을 추가했다.
  • flat_mapflat_set이 표준 라이브러리에 추가되었다.
  • 표준 출력에 서식 있는 텍스트를 출력하기 위한 std::printstd::println 함수를 추가했다.
  • 표준 라이브러리를 가져오기 위한 이름 있는 모듈 stdstd.compat를 제공한다.
  • fopen의 "x" 플래그와 유사하게 독점 모드 fstream에 대한 지원을 추가했다.
  • std::format이 범위, 튜플 및 기타 컨테이너를 처리할 수 있도록 허용했다.
  • std::forward_like를 추가했다.
  • std::string::substr이동 시맨틱스를 사용하도록 만들었다.
  • std::ranges::input_range를 모델링하는 코루틴 생성자를 구현하는 std::generator를 추가했다.
  • views::cartesian_product, views::repeat, views::stride, views::as_const, views::as_rvalue.
  • 새로운 알고리즘 추가: ranges::find_last, ranges::contains 및 범위 폴드 알고리즘.
  • std::tuple을 다른 튜플 유사 객체와 호환 가능하게 만들었다.
  • 암시적 수명 타입에 대한 명시적 수명 관리.
  • std::bitsetstd::to_charsstd::from_chars의 정수 오버로드를 constexpr-호환 가능하게 만들었다.
  • 비교 개념에 대한 이동 전용 타입 지원 추가.
  • 비범위 알고리즘의 입력으로 범위 이터레이터.
  • 이동 전용 타입을 허용하도록 범위 어댑터 완화.

2022년 11월

2022년 11월 7일 하이브리드 WG21 회의 후, 다음 기능 및 결함 보고서가 추가되었으며 여론조사를 통해 승인되었다.[159]

  • operator[]static이 될 수 있도록 허용했다.
  • 상수 표현식에서 사용 가능한 경우, staticthread_local 변수가 constexpr 함수에 나타날 수 있도록 허용했다.
  • consteval이 위로 전파되도록 했다. 즉, 특정 기존 constexpr 함수는 컴파일 시간에만 호출될 수 있는 경우 consteval 함수가 된다.
  • 범위 기반 for 루프의 for-range-initializer에 나타나는 임시 변수의 수명을 전체 루프를 포함하도록 연장했다.
  • (비트별이 아닌 모든) 복합 할당volatile 변수에 대한 폐기 해제를 되돌렸다.
  • std::expected에 대한 모나드 함수.
  • 네이티브 유니코드 API가 사용되는 경우 std::print의 출력을 기본 스트림과 동기화한다.[160]

2023년 2월

2023년 2월 6일부터 11일까지 열린 최종 하이브리드 WG21 회의 후, 다음 기능 및 결함 보고서가 추가되었으며 여론조사를 통해 승인되었다.[161]

  • 유니코드 표준 참조.[162]
  • 적절한 평탄화를 위한 스태싱 이터레이터 스태싱.[163]
  • views::enumerate
  • 뷰의 다중 매개변수 생성자를 명시적으로 만들기
  • 범위를 약간 더 완화
  • std::format의 이스케이프 개선
  • std::format의 너비 추정 개선
  • std::format 채움 문자 허용
  • thread::idstacktrace 포매팅
  • 타입 트레잇 std::is_implicit_lifetime
  • std::reference_wrapperstd::common_reference_t는 참조 타입이어야 한다.
  • std::allocator_traits의 사용자 특수화 금지
  • std::pmr::generator
  • std::numeric_limits::has_denorm 폐기
  • std::barrier의 페이즈 완료 보장
Remove ads

같이 보기

각주

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads