7

c++11 ドラフトのリビジョン N3242 を読むと、標準ライブラリのインターフェイスの一部のコンポーネント (特にスレッド化とロック) が例外処理に依存しているようです。

私は例外を無効にして多くの作業を行っているため、例外処理を有効にしないと (実際的または論理的に) 使用できないライブラリ コンポーネント/機能はどれでしょうか?

4

2 に答える 2

4

まず最初に (念のため)、例外の無効化と RTTI は、標準では考慮されていないコンパイラ固有の拡張機能です。

標準ライブラリは通常、コンパイラに関連付けられているため、標準ライブラリの実装は、これに対処するように特別に設計されている可能性があります (特に、 を発生させる代わりに null ポインターを返すことに対処するように設計されている可能性があります)。newstd::bad_alloc

したがって、あなたが求めるものは無意味です。完全なリストについては、独自のライブラリのドキュメントを確認してください。

そうは言っても、標準では、多くの操作がスローされないことが保証されています。例外を飲み込む操作については知りませんが、それらのほとんどは実際にそのまま使用しても安全だと思います。

たとえば、すべてのアルゴリズムは安全でなければなりません。

それでも、繰り返しになりますが、実装のドキュメントを読むことだけをお勧めします。

于 2011-09-13T12:42:04.993 に答える
1

この質問は 1 か月以上前のもので、回答がありません。

コミュニティ wiki と見なすことができる回答を提供しています。必要に応じて追加してください。

  • std::thread セクション 30.2.2。推移的。ネイティブ実装を使用して実装された抽象化。

  • std::mutex, std::recursive_mutex, std::timed_mutex, std::recursive_timed_mutex. セクション 30.4.1、独自の例外フリー ロックを ( 、 、 経由で) 提供した場合は非推移BasicLockable的。ネイティブ実装を使用して実装された抽象化。LockableTimedLockable

  • std::condition_variable セクション 30.5。推移的。ネイティブ実装を使用して実装された抽象化。

注:もっとあります。

于 2011-10-14T20:23:12.237 に答える