概要
C++23とは、2023年中に改訂される予定の、C++バージョンの通称である。
このバージョンは、策定中のためC++2bと呼ばれることがある。「(C++20である2020年の次の) 202b年にリリースされる」という伏せ字として「b」が使われているが、3年周期に次のバージョンが策定されることが決まっているため、伏せ字になっている年数がずれることはない。
言語機能
言語機能 | 説明 |
---|---|
契約に基づくプログラミング | 事前条件、事後条件、表明を宣言する新たな属性構文を追加 |
ライブラリ更新の概要
新ライブラリ
- 契約違反のハンドリングをするためのライブラリとして
<contract>
を追加
スマートポインタ
<memory>
にstd::owner_hash
とstd::owner_equal
が追加され、非順序連想コンテナのキーとしてstd::weak_ptr
を使用できるようになった
型特性
<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
機能の非推奨化
std::algined_storage
とstd::aligned_union
を非推奨化。これらの機能は未定義動作を引き起こし、間違った保証が行われ、よくないAPI設計が行われていたため、非推奨となる。std::algined_storage
の代わりにalignas(T) std::byte[sizeof(T)];
を使用することを推奨するstd::aligned_union
の代わりにalignas(Ts...) std::byte[std::max({sizeof(Ts)...})];
を使用することを推奨する