[解決済み] noexceptを本当に使うべきはいつですか?
質問
は
noexcept
キーワードは、多くの関数シグネチャに適切に適用できますが、実際にどのような場合に使用を検討すべきなのか、よくわかりません。これまで読んできた内容からすると、直前になって追加された
noexcept
は、ムーブコンストラクタが投げるときに発生するいくつかの重要な問題に対処しているようです。しかし、私はまだ、いくつかの実用的な質問に対する満足のいく答えを提供することができません。
noexcept
ということです。
-
絶対に投げないとわかっていても、コンパイラが勝手に判断できない関数の例はたくさんあります。このような場合
noexcept
の関数宣言に のような場合ですか?を付ける必要があるかどうか考えなければならない。
noexcept
の後に それぞれ 関数宣言は、プログラマの生産性を大きく低下させます(正直言って、面倒くさい)。どのような場面でnoexcept
また、どのような状況であれば、暗黙の了解であるnoexcept(false)
? -
を使用した後、現実的にいつ頃からパフォーマンスの向上が期待できるでしょうか?
noexcept
? 特に、C++ コンパイラがnoexcept
.個人的に気になるのは
noexcept
というのも、コンパイラがある種の最適化を安全に適用するための自由度が高まるからです。最近のコンパイラはnoexcept
このように もしそうでなければ、近い将来そうなることを期待してもよいでしょうか?
解決方法は?
実際に使用するのに十分な時間がないため、これに対するベストプラクティスの答えを出すのは時期尚早だと思います。もしこれが、throw指定子が登場した直後に質問されたとしたら、答えは今とはまったく異なるものになったでしょう。
<ブロッククオート
を付ける必要があるかどうか考えなければならない。
noexcept
は、プログラマの生産性を大幅に低下させるでしょう(率直に言って、苦痛です)。
じゃあ、その関数が絶対に投げないことが明らかなときに使ったらいい。
を使用した後、現実的にいつ頃からパフォーマンスの向上が期待できるでしょうか?
noexcept
? [中略)個人的に気になるのはnoexcept
というのも、コンパイラがある種の最適化を安全に適用するための自由度が高まるからです。
をチェックできるため、コンパイラの最適化ではなく、ユーザーの最適化によって最大の最適化が得られると思われます。
noexcept
とオーバーロードしてしまいます。ほとんどのコンパイラは、例外をスローしなければペナルティを課さないという処理方法に従っているので、処理コードを削除することでバイナリサイズを小さくできるかもしれませんが、あなたのコードのマシンコードレベルではあまり(あるいは何も)変わらないのではないかと思います。
使用方法
noexcept
の4つです (コンストラクタ、代入、デストラクタはすでに
noexcept
が最も効果的であると思われます。
noexcept
のようなテンプレートコードでは、チェックは「一般的」です。
std
コンテナです。例えば
std::vector
とマークされていない限り、クラスの動きは使用されません。
noexcept
(あるいはコンパイラがそうでないと推論できる)。
関連
-
[解決済み】C++でユーザー入力を待つ【重複あり
-
[解決済み】なぜ、サイズ8の初期化されていない値を使用するのでしょうか?
-
[解決済み] static_cast, dynamic_cast, const_cast, reinterpret_cast はいつ使うべきですか?
-
[解決済み] スマートポインターとは何ですか?
-
[解決済み] なぜ、オブジェクトそのものではなく、ポインタを使用しなければならないのですか?
-
[解決済み] 仮想デストラクタはいつ使うのか?
-
[解決済み] C++でクラスと構造体はいつ使い分けるべきか?
-
[解決済み] std::move()とは何ですか?また、どのような場合に使用するのですか?
-
[解決済み】高放射能環境下で使用するアプリケーションのコンパイルについて
-
[解決済み】なぜC++プログラマは'new'の使用を最小限に抑えなければならないのでしょうか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】C++ クラスヘッダが含まれているときに「不明な型」があるのはなぜですか?重複
-
[解決済み】C-stringを使用すると警告が表示される。"ローカル変数に関連するスタックメモリのアドレスが返される"
-
[解決済み】C++コンパイルタイムエラー:数値定数の前に期待される識別子
-
[解決済み】'cout'は型名ではない
-
[解決済み】クラステンプレートの使用にはテンプレート引数リストが必要です
-
[解決済み】エラー:free(): 次のサイズが無効です(fast)。
-
[解決済み] 解決済み] `pthread_create' への未定義の参照 [重複] [重複
-
[解決済み】浮動小数点数の乱数生成
-
[解決済み】C++ - 適切なデフォルトコンストラクタがない [重複]。
-
[解決済み】'std::cout'への未定義の参照