C++20、そんなに難しいのか
(docs.google.com)- Google Chromeチームが、C++20導入時に発生した40件あまりの問題点を列挙し、解決策を整理
- C++標準は3年ごとに策定されるが、リリース後にChromeで最初に適用されるのは3年後になることが多い
- C++20には多くの変更がある
- 廃止予定、比較演算子の並べ替え、アグリゲーション規則の変更など
- 問題点
- GoogleのスタイルガイドがC++17ベース
- ClangのC++20対応が未完成で、新しいlibc++が必要
- Windowsバイナリが大きくなる
std::iteratorのサポート終了(C++17から)concept、requiresのような新しいキーワードが追加され、同名の変数があると衝突する- そのほか多数
6件のコメント
えっ… C++くらいの言語がブレイキングチェンジをたくさん生み出しちゃだめなんじゃないですか… ただの私の固定観念なんでしょうか…
だからC++は変な言語なんですよね..
言語はバージョンアップを重ねるたびにモジュールだのコルーチンだのいろいろ追加されて、何でも自分でやろうとするし、
機能が出てもコンパイラにその機能が追加されるのは4年後5年後だったりするし、
コンパイラごとにできることに差があって文法も少しずつ違うし、
バージョンアップで今まで普通に使えていた細かいものがどんどんなくなっていくし、
STLも肥大化して、バージョンアップが進むと旧世代のコンピュータでは動かなくなるし..
使うならGoやPythonを使えと言いたいですね
バージョンアップに伴って下位互換性が維持されなかった項目は、
ほとんどが未定義動作や欠陥のある機能を改善したケースです。
モジュール、コンセプト、コルーチンのような機能は、他の言語と同じように言語が継続的に発展しているということです。
特にモジュールについては、以前からずっと存在していた要求事項ですね。
std::iteratorの廃止予定化が、おっしゃる「未定義動作や欠陥のある機能を改善」したケースに含まれるのかは、よく分かりません。ただし、C++が他の言語と比べて遅れている点は、主に次のとおりです。
このうち、コミュニティの無関心によって質の高い記事が非常に不足しており、
利用者数の少なさのために残り3つの問題が解決されないことが大きいと考えています。