問題タブ [noexcept]
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++ - このコードで「例外仕様がベースよりも緩い」というエラーが発生するのはなぜですか?
Xcode 6.1 の clang バージョン (LLVM 3.5svn ベースの clang-600.0.54) を使用して次のコードをコンパイルしようとすると、-std=c++11
よく-stdlib=libc++
わからないエラーが表示されます。
結果:
どういうわけかofImpl::L::~L()
を継承しているように見えますが、その理由はわかりません。興味深いことに、ラムダ内への割り当てをコメントアウトすると、同じコードがコンパイルされます。から仕様を削除してもコンパイルされますが、それが必要です (理由を説明するには少し長くなりますが、そうします)。ラムダが参照によってキャプチャされた場合もコンパイルしますが、ここでのポイントは、実装を共有するハンドルをコピーできることです。に追加しても役に立ちません。noexcept(false)
Hndl::~Hndl()
h.impl->i
noexcept(false)
Hndl::~Hndl()
noexcept(true)
Impl::~Impl()
ideone.com の c++11 コンパイラは、喜んでそのままコンパイルします。
ここで何が起こっているのか誰か説明してくれませんか?
c++11 - 「noexcept」デストラクタから例外をスローする可能性がある場合、Clang は警告してくれますか?
C++11 では、デフォルトでデストラクタが指定さnoexcept
れます。noexcept
デストラクタが例外をスローする (したがって を呼び出す)ケースを Clang に報告させる方法はありstd::terminate
ますか?
c++ - メンバーのメソッドに応じて noexcept
この質問に関連して、パブリック インターフェイスの後にプライベート セクションを指定したいと思います。
しかし、Clang から、x が宣言されていない識別子であるというエラーが表示されます。
メンバー x の宣言が g の宣言の前にある場合は、問題なくコンパイルされます。クラス定義の宣言よりも前に、noexcept 演算子でメンバー変数を使用することはできないのでしょうか? そうでない場合、x の宣言を先に進めることなく、同等の noexcept 指定子を実現するにはどうすればよいでしょうか?
c++ - noexcept 関数ポインタを作成するにはどうすればよいですか?
次のような関数ポインタを作成したいと思います。
しかし、これはうまくいきません。関数宣言の例外指定子が不正のようです。ただし、これを行う方法があるはずです。右?
これは、これとは異なる質問にリンクされていました。ここで、noexcept 指定子を使用して関数ポインターを作成する方法を尋ねています。それは、「関数 typedef の noexcept 指定子」という質問では尋ねられず、答えられませんでした。
c++ - noexcept とテンプレートの g++ バグの可能性
テンプレートを指定子と組み合わせて使用すると、noexcept 指定の不一致に関するエラーが発生しnoexcept
ます。私が使用したさまざまなバージョンのclangでコンパイルされ、gccのすべてのバージョンで失敗します。
エラー:
これはバグですか?それを回避する方法はありますか?