もちろん、これは他の機能に影響を与え、標準が再び大きく開かれるように思われます。
しそうにない。彼らはまだ標準をすぐにまとめたいと考えており、これが概念を削除する主な理由の 1 つです。無関係な変更に対して「広くオープン」にすることは、概念を捨てることによって得たすべてを捨てるだけです。
とにかく....残りの C++0x の追加のうち、他に削除したいものは思い浮かびません。ただし、コンセプトに関する彼らの決定には同意します。Stroustrup の論文は実際にいくつかの深刻な問題を概説しています。概念の現在の仕様は、テンプレート エラー メッセージを単純化することは認められていますが、ジェネリック プログラミングの有用性を劇的に低下させることになります。
私が最初にその論文を読んだとき、仕様に重大な変更を加えるには遅すぎると思ったので、私は怖くなりました。そうではなかったことが判明し、委員会は劇的な行動をとることをいとわなかった.
しかし、それを除けば、C++0x は良い状態だと思います。残りの新機能はすべて一見の価値があります。
もちろん、削除したい既存の機能はたくさんあります。主にvector<bool>
専攻。うまくいかなかった機能の一般的な例は他にもありますが (export キーワード、例外仕様)、無視できないのはベクトルの特殊化だけです。テンプレートをエクスポートしようとしない限り、キーワードが存在する (そしてコンパイラによって実装されていない) ことは問題ではなく、例外仕様の使用を控えることができますが、ブール値のベクトルが必要になるたびに、現在の標準に滑り込んだ愚かな時期尚早の最適化に悩まされています。
残念ながら、彼らはそれを取り除くことをあきらめたようです. (最後に確認したところ、廃止されていませんでした)。
もちろん、多くの古い C クラフトも捨てられる可能性がありますが、最近、私が本当に見たい変更の 1 つは、Iostreams ライブラリを捨てることであることがわかりました。それを捨てて、ジェネリックプログラミングに基づいて新しいSTLスタイルのI / Oライブラリを構築してください。
現在の OOP スタイルの Iostream ライブラリは、醜く、遅く、複雑すぎて、柔軟性に欠けています。新しいストリームの定義に関わるブードゥー教が多すぎ、含まれる標準ストリーム タイプが少なすぎ、柔軟性が少なすぎます (ライブラリがいかに制限されているかを認識させた問題は、文字列から float を抽出する必要があることでした。stringstream で簡単に実行できます。 、しかし、頻繁に行う必要がある場合は、入力文字列を毎回コピーする必要はありません (stringstream のように) -- 既存のイテレータ範囲で動作するストリームはどこですか? または生の配列ですか? )
IOstream を捨てて、最新の代替品を開発すれば、C++ は大幅に改善されます。
そしておそらく、文字列クラスについても何かをするでしょう。これは今のところ問題なく動作しますが、実際のところ、膨大な数のメンバー関数はどうなっているのでしょうか? それらのほとんどは、フリー関数としてより適切に機能し、より一般的になります。標準ライブラリの多くは、文字列クラスに特に依存していますが、原則として、任意のコンテナー、またはイテレーター ( std::getline
、私はあなたを見ています) でさえも機能します。