問題タブ [nothrow]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - デストラクタに nothrow 例外指定子を指定するには?
nothrow
のデストラクタがFoo
スローされないときはいつでも関数があることを指定しようとしています。型特性を使用してこれを行うことができますstd::is_nothrow_destructible<>
。これを直接行うにはどうすればよいですか?次のことを試しましたが、コメント行のコメントを外すとコンパイルされません
エラーが発生する
エラー指定子noexcept(noexcept(~Foo()))
は OK ではありませんが、コンストラクターには を使用できますnoexcept(noexcept(Foo()))
。ここにいくつかの明らかな構文がありませんか?
c++ - 演算子 new を使用した C++ メモリ割り当て: 割り当てエラーを検出して処理する方法は何ですか?
以前のプログラムでは、次のコードを使用して、通常は代替案を考えずに、メモリ割り当ての失敗をチェックしました。
この方法については、こちらにも記載されています。
ここで構文のリファレンスを見つけました:
nothrow
プログラマーがnew への「引数」を含めない場合、チェックnullptr
が無効になることを示唆していますか? これは正しいです?それともOS依存?
私が理解しているように、これに関連するオーバーヘッドのために、実際にブロックから回復できない限りnew
、ブロックを配置してもほとんど意味がありません。try-catch
これも正しいですか?
c++ - operator++() notrow はコンパイルされません
operator++() を非スローにできないのはなぜですか?
これは、後置 ++ 演算子 (前置 ++ 演算子よりも) を使用する数少ない利点の 1 つです。
たとえば、このコードはコンパイルされません
余談ですが、後置演算子もスレッドセーフにすることができます。
c++ - std:variant の operator=(T&& t) の noexcept 仕様が内部型のデストラクタの noexcept 仕様に依存しないのはなぜですか?
長いタイトル:の noexcept 指定が内部型のデストラクタの noexcept 指定に依存しないのはstd:variant
なぜですか?operator=(T&& t)
私はcppreferenceでそれを見ることができます
は
したがって、これはコンパイルされます:
しかし、次FooThrow
のデストラクタを呼び出しnoexcept(false)
ます。
正しくないようです。何か不足していますか?