最終更新日時(UTC):
が更新

履歴 編集

C++23

概要

C++23とは、2023年中に改訂される予定の、C++バージョンの通称である。

このバージョンは、策定中のためC++2bと呼ばれることがある。「(C++20である2020年の次の) 202b年にリリースされる」という伏せ字として「b」が使われているが、3年周期に次のバージョンが策定されることが決まっているため、伏せ字になっている年数がずれることはない。

言語機能

言語機能 説明
(符号付き)size_tリテラルのためのサフィックス 42z/42Zとすることでsize_tに対応する符号付き整数型のリテラルとする
部分特殊化の汎用化仕様 変数テンプレートの部分特殊化を許可するために部分特殊化の仕様を汎用化
文字・文字列リテラル中の数値・ユニバーサルキャラクタのエスケープに関する問題解決
スコープと名前ルックアップの仕様整理 複雑で不完全になっているスコープと名前ルックアップの仕様を整理し、一部の問題を解決する
ラムダ式で()を省略できる条件を緩和 キャプチャや修飾をともなってもパラメータリストが空であれば()を省略できる
契約に基づくプログラミング (まだ入っていない) 事前条件、事後条件、表明を宣言する新たな属性構文を追加

小さな変更

言語機能 説明
参照するPOSIX規格を更新 新しいPOSIX規格の機能を標準C++が参照していたため、参照するPOSIX規格のバージョンを更新

ライブラリ更新の概要

新ライブラリ

  • スタックトレースを取得するためのライブラリとして<stacktrace>を追加
  • CとC++の間でのアトミック操作の相互運用のため、C互換ライブラリとして<stdatomic.h>を追加
  • 契約違反のハンドリングをするためのライブラリとして<contract>を追加 (まだ入っていない)

文字列

スマートポインタ

  • <memory>std::owner_hashstd::owner_equalが追加され、非順序連想コンテナのキーとしてstd::weak_ptrを使用できるようになった

ユーティリティ

型特性

  • <type_traits>に、スコープ付き列挙型かを判定する型特性std::is_scoped_enumを追加
  • <type_traits>に、第1テンプレート引数についている型修飾を第2テンプレート引数の型に付加する型特性として、以下を追加:
    • std::copy_const
    • std::copy_volatile
    • std::copy_cv
    • std::copy_reference
    • std::copy_extent
    • std::copy_all_extents
    • std::copy_pointer
    • std::copy_all_pointers
    • std::copy_cvref
  • <type_traits>に、第1テンプレート引数についている型修飾を外す型特性として、以下を追加:
    • std::remove_all_pointers

機能の非推奨化