C++の標準化を取り扱っている国際標準化機構(ISO)のワーキンググループ21(WG21)は、「C++20」の最終版について合意に達した。今回の改訂は、2017年に策定された「C++17」以降初めての大規模なものになる。
Microsoftのエンジニアであり、ISOの委員会であるWG21の委員長を務めるHerb Sutter氏は、「9月4日金曜日にC++20のDIS(国際標準ドラフト)に関する投票が終了し、満場一致で可決された」と述べた。
同氏は、「これは、C++20が最終的な技術承認を受け、ISOの投票プロセスが終了したことを意味する。私たちは、ISOの編集作業の最終ラウンドが終了した後、この標準が2020年末までに正式に公開されると考えている」述べている。
今回のリリースは、歴史的に見ても大きな出来事だ。Sutter氏は以前、C++20は「C++11以降で最大のリリースだ」と述べていた。これは、3年ごとに行われてきた過去3回のリリースよりも大規模なものであることを意味している。
C++は35年前の1985年にデンマーク人研究者のBjarne Stroustrup氏によって生み出され、リリースされた。C++はMicrosoftにとって重要な言語であり、同じ年に一般消費者向けにリリースされたWindowsの構築に使用された。最近のMicrosoftは、Mozillaが開発した言語である「Rust」で、CやC++で書かれた古いWindowsのコードを書き換えることを検討している。これは、Rustのメモリー安全性が高いからだ。
処理が高速な言語として支持を集めているC++は、近年になって人気が高まっており、ハードウェアの制御に有用であることから、ゲーム開発で幅広く使用されている。
「Microsoft Visual Studio」「GNU Compiler Collection(GCC)」「Clang」などの主要なC++コンパイラは、C++17に対応している。
C++20で追加される重要な機能を2つ挙げるとすれば、「モジュール」と「コルーチン」だろう。
GoogleのRichard Smith氏の主導で導入されたモジュールは、ヘッダーファイルの代わりの役割を果たし、大規模なビルドに対応しながら、マクロの影響を隔離するのに役立つ。Sutter氏は2019年2月、C++20で追加されたモジュールについて、「約35年間の歴史の中で初めて、名前付きのカプセル化境界を定義できる機能が新たに追加された」と述べていた。
同氏はさらに、「これまで、プログラマーが自分で(a)その中身が隠蔽されているものに対して、(b)ユーザーが定義した名前を付与することによって、自分だけの特別なワード(Words of Power)を作るためのC++の機能は3つ存在した。変数(現在の値をカプセル化する)、関数(コードと動作をカプセル化する)、およびクラス(その両方をカプセル化して状態と関数のまとまりを一緒に提供する)だ」と説明している。
一方、コルーチンは関数を一般化したものだ。C++のコントリビューターは、コルーチンの提案の中で、「通常の関数は常に冒頭から処理が始まり、末尾で終了するが、コルーチンは実行を一時中断し、後になってから中断したところから処理を再開することができる」と説明している。
この記事は海外CBS Interactive発の記事を朝日インタラクティブが日本向けに編集したものです。