C++23
C ++ 23は、 C ++ 20に続くC ++プログラミング言語のISO / IEC14882標準の次のバージョンの非公式な名前です。現在のドラフトはN4901です。
2020年2月、プラハで開催されたC ++ 20の最終会議で、C ++ 23の全体的な計画が採択されました。 、エグゼキュータ、およびネットワーキング。
最初WG21会議はで場所を取ることを意図していた23 ++ Cに焦点を当てヴァルナ早い2020年6月に、しかし原因にキャンセルされたCOVID-19パンデミック、 で2020年11月の会議だったとして、ニューヨーク そして2021年2月にハワイのコナで開催された会議。 2022年以前に対面会議が行われる可能性は低い。
新機能
対面のWG21ミーティングがないため、これまでのところ、C ++ 23ドラフトに追加された新機能はほとんどありません。しかし、2020年11月9日の仮想WG21会議の後に、以下が追加されました。そこでは、ストロー投票によって承認されました。
のリテラル接尾辞std::size_tおよび対応する符号付きタイプ
文字列に特定の部分文字列または文字が含まれているかどうかを確認するcontainsためのstd::basic_stringおよびのメンバー関数std::basic_string_view
Boost .Stacktrace に
タイプ特性std::is_scoped_enum
Cアトミック
2021年2月22日の仮想WG21会議の後、ストロー投票で承認された場所に次の機能が追加されました。
入力範囲アダプターの修復とcounted_iterator。
ラムダ式()から不要な空のパラメーターリストを削除します。
の要件を緩和しtime_point::clockます。
std::visitから派生したクラスの場合std::variant。
ロックロック可能。
条件付きで借用した範囲。
std::to_underlying。
2021年6月の2021年夏のISOC ++標準プレナリー仮想会議の後、新機能と欠陥レポートがストロー投票によって承認されました。
Consteval if()。if consteval
コンテキスト変換をに絞り込みます。bool
重複する属性を許可します。
std::spanベースの文字列ストリーム(
std::out_ptr()およびstd::inout_ptr()。
constexpr以下のためstd::optional、std::variant、とstd::type_info::operator==。
イテレータは、std::stack(スタック)とstd::queue(キュー)のコンストラクタをペアにします。
範囲ライブラリのいくつかの変更:
一般化さstarts_withれends_with、任意の範囲。
に名前が変更さsplit_viewれlazy_split_view、新しいsplit_view。
の制約を緩和しますjoin_view。
default_initializable概念から制約を削除しますview。
の範囲コンストラクタstd::basic_string_view。
からの禁止std::basic_stringとstd::basic_string_view建設。nullptr
std::invoke_r。
の改善std::format。
std::pairの転送コンストラクターのデフォルト引数を追加します。
2021年10月の2021年秋のISOC ++標準プレナリー仮想会議の後、新機能と欠陥レポートがストロー投票によって承認されました。
関数内の非リテラル変数、ラベル、およびgotoですが、コンパイル時にそれらを評価するにはまだ形式が正しくありません。constexpr
明示的なオブジェクトパラメータ。this
文字セットとエンコーディングの変更。
新しいプリプロセッサ:#elifdefおよび#elifndef。
init-statementでエイリアス宣言を許可します。
多次元添え字演算子のオーバーロード(例arr)。
言語での崩壊コピー:または。auto(x)auto{x}
テキストフォーマットライブラリの変更:
クロノフォーマッタでのロケール処理の修正。
のようstd::generatorな型を許可するためのフォーマット引数での転送参照の使用。
std::pmr::stacktraceと同等の型エイリアスの追加std::basic_stacktrace
範囲ライブラリの変更:
ビューの洗練された定義。
関数テンプレートの交換std::ranges::istream_viewエイリアステンプレートでstd::ranges::istream_view、std::ranges::wistream_view、およびカスタマイズポイントオブジェクトstd::views::istream。
zipレンジアダプタファミリ:ip_view ip_transform_view
adjacent_view(およびstd::views::pairwiseと同等std::views::adjacent<2>)
adjacent_transform_view(およびstd::views::pairwise_transformと同等std::views::adjacent_transform<2>)
std::move_only_function。
のモナディック操作std::optional。
メンバー関数テンプレートstd::basic_string::resize_and_overwrite。
揮発性ポインタの出力()。volatile T*
std::byteswap。
連想コンテナの不均一な消去の過負荷。
すべての専門std::spanおよびstd::basic_string_view自明コピー可能です。
に条件付き仕様を追加します。noexceptstd::exchange
仕様の刷新と整数クラス型の使用。
Cヘッダーの非推奨をCとの相互運用性のための主要な標準に移動します。
削除された機能
ガベージコレクションのサポート。
参考文献
^ 「ワーキングドラフト、プログラミング言語C ++の標準」 (PDF)。2021-10-23。
^ Dusíková、ハナ(2019-11-06)。「N4817:2020プラハ会議の招待と情報」(PDF)。2020-02-13を取得。
^ Voutilainen、Ville(2019-11-25)。「C ++ 23の全体計画を大胆に提案する」。www.open-std.org 。2020-02-13を取得。
^ 「C ++をリモートで進化させる」。
^ サッター、ハーブ
「事業計画とコンビーナのレポート:ISO / IEC JTC1 / SC22 / WG21(C ++)」(PDF)。
^ 「今後の会議、過去の会議」。
^ Ranns、ニーナ(2020-11-19)。「WG212020-11仮想会議:会議の議事録」(PDF)。
^ JeanHeyd Meneide; Rein Halbersma(2019-11-24)。「(署名された)size_tのリテラルサフィックス」。
^ Wim Leflere; ポールフィー(2020-06-13)。「文字列には関数が含まれています」。
^ Alexey Gorgurov; アントニー・ポルヒン(2020-09-16)。「スタックトレースライブラリを追加する提案」。
^ Juan Alday(2020-10-12)。「スコープ付き列挙型を検出するための型特性の提案」(PDF)。
^ ハンス-J。ベーム(2020-10-23)。「P0943R6:C ++でCアトミックをサポートする」。
^ Ranns、ニーナ(2021-02-22)。「WG212021-02仮想会議:会議の議事録」(PDF)。
^ ティムソング(2021-01-12)。「入力範囲アダプターとcounted_iteratorの修復」。
^ アレックスクリステンセン; JFバスティエン(2020-12-11)。「P1102R2 :()でダウン!」。
^ アレクセイ・ドミトリエフ; ハワード・ヒナント(2020-10-22)。”time_point :: clockの要件を緩和する”。
^ Barry Revzin(2020-10-30)。”std :: variantから継承”。
^ ティムソング(2020-11-13)。「ロックロックロック可能」。
^ Barry Revzin(2020-02-19)。「条件付きで借用した範囲」。
^ JeanHeyd Meneide(2021-01-22)。”std :: to_underlying forenumerations”。
^ Ranns、ニーナ(2021-06-07)。「WG212021-06仮想会議議事録」(PDF)。
^ バリーRevzin; リチャード・スミス; アンドリューサットン; Daveed Vandevoorde(2021-03-22)。「constevalの場合」。
^ AndrzejKrzemieński(2021-04-12)。「コンテキスト変換をboolに狭める」。
^ Erich Keane(2020-07-02)。「重複する属性を許可する」(PDF)。
^ Peter Sommerlad(2021-02-26)。「span
^ JeanHeyd Meneide; Todor Buyukliev; イザベラムエルテ(2021-04-15)。「out_ptr-スケーラブルな出力ポインタの抽象化」。
^ バリーRevzin(2021-02-11)。”std :: optionalおよびstd :: variantにconstexprがありません”。
^ ピーターディモフ(2021-05-01)。”std :: type_info :: operator == constexprを作成しています”。
^ Corentin Jabot(2021-03-05)。「イテレータはスタックとキューのコンストラクタをペアにします」(PDF)。
^ クリストファーディベラ(2021-02-19)。”starts_withおよびends_with”。
^ バリーRevzin(2021-03-05)。「優れた文字列分割」。
^ ティムソング(2021-05-06)。「join_viewは範囲のすべてのビューに参加する必要があります」。
^ バリーRevzin(2021-05-14)。「ビューはデフォルトで構築可能である必要はありません」。
^ Corentin Jabot(2021-03-17)。「範囲コンストラクタforstd :: string_view 2:Constrain Harder」(PDF)。
^ Yuriy Chernyshov(2020-09-06)。”nullptrからのstd :: basic_stringおよびstd :: basic_string_viewの構築を禁止する提案”。
^ Zhihao Yuan(2020-04-29)。”invoke_r”。
^ ビクターZverovich(2021-02-05)。「std :: formatの改善」。
^ ローガンR.スミス(2021-01-25)。「ペアの転送コンストラクターのデフォルト引数」。
^ Ranns、ニーナ(2021-10-04)。「WG212021-10仮想会議議事録」(PDF)。
^ Ville Voutilainen(2021-07-12)。「constexpr関数の非リテラル変数(およびラベルとgoto)」。
^ GašperAžman; Syブランド; ベンディーン; バリー・レヴジン(2021-07-12)。「これを推測する」。
^ Corentin Jabot(2021-09-14)。「一貫性のある文字リテラルエンコーディング」(PDF)。
^ イェンスモーラー(2021-09-21)。「文字セットとエンコーディング」。
^ メラニーブロワー(2021-04-30)。「前処理ディレクティブelifdefおよびelifndefのサポートを追加する」(PDF)。
^ イェンスモーラー(2021-04-13)。「init-statementを拡張してalias-declarationを許可する」。
^ マーク・ヘメン; デイジー・ホルマン; コレンティンジャボット; イザベラムエルテ; クリスチャン・トロット(2021-09-14)。「多次元添え字演算子」(PDF)。
^ Zhihao Yuan(2021-07-12)。「auto(x):言語でのdecay-copy」。
^ ビクターZverovich; コレンティンジャボット(2021-09-11)。「クロノフォーマッタでのロケール処理の修正」。
^ ビクターZverovich(2021-09-24)。”std :: generatorのようなタイプのサポートをstd :: formatに追加します”。
^ スティーブダウニー(2021-06-14)。”std :: stacktraceのpmrエイリアスを追加します”。
^ バリーRevzin; ティムソング(2021-08-15)。「ビューとは何ですか?」。
^ ニコライ・ジョスティス(2021-09-24)。「istream_viewを修正」(PDF)。
^ ティムソング(2021-06-11)。「zip」。
^ Matt Calabrese; ライアン・マクダガル(2021-07-09)。「move_only_function」。
^ Syブランド(2021-04-27)。”std :: optionalのモナディック操作”。
^ クリス・ケネリー; マーク・ゼレン(2021-09-14)。”basic_string :: resize_and_overwrite”。
^ ブライスアデルスタインレルバッハ(2021-09-25)。「揮発性ポインタの印刷」。
^ イザベラムエルテ; コレンティンジャボット(2021-09-17)。「楽しみのためのバイトスワッピング&& nuf」。
^ コンスタンティンボヤリノフ; セルゲイ・ヴィノグラドフ; Ruslan Arutyunyan(2020-12-15)。「連想コンテナの不均一な消去の過負荷」。
^ Nevin Liber(2021-03-19)。「span&basic_string_viewがTriviallyCopyableである必要があります」(PDF)。
^ ジュゼッペ・ディアンジェロ(2021-06-28)。”条件付きnoexcept仕様をstd :: exchangeに追加します”。
^ ティムソング(2021-08-06)。「整数クラス型のクリーンアップ」。
^ ThomasKöppe(2021-06-11)。”” Cヘッダー” “のステータスを明確にします。
^ JFバスティエン; Alisdair Meredith(2021-04-16)。「ガベージコレクションサポートの削除」。
このプログラミング言語関連”