問題タブ [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.

0 投票する
1 に答える
1913 参照

c++ - デフォルトで定義された移動コンストラクターの noexcept のルールは何ですか?

特に関連して、可能であればstd::vector型がnoexcept移動可能であることが重要です。

= defaultしたがって、次のような移動コンストラクターを宣言するとき

std::is_nothrow_move_constructible<Object1>::valuetrueすべてのメンバー (ここでは 0)Object1は notrow-move-constructible であり、ここで回答されます。

= defaultしかし、次のコードのように、ムーブ コピー コンストラクターが宣言され、後で定義されている場合はどうなるでしょうか。

g++ 4.9.2 ではstd::is_nothrow_move_constructible<Object2>::valuefalse宣言と定義の両方noexceptを make itとしてマークする必要がありtrueます。

今、私が興味を持っているのは、実際のルールが何であるかです。特に、Effective Modern C++の Item 22 (Scott Meyers) は、私がObject2.

0 投票する
2 に答える
2096 参照

c++ - noexcept としてマークされた関数は、例外を内部に持つことができますか?

noexceptとマークされた関数があるが、内部にスローできるコード行があるとしましょう。そのコード行は try ブロックになり、例外がキャッチされます。それは何かを引き起こしますか?

0 投票する
1 に答える
6133 参照

c++ - 定数式で呼び出された `static constexpr` 関数は...エラーですか?

次のコードがあります。

sincefoo()static constexpr関数であり、bar宣言される前に定義されているため、これは完全に受け入れられると思います。

ただし、g++次のエラーが表示されます。

定数式で関数を呼び出す機能がの要点であるconstexprため、これは役に立ちません。

clang++はもう少し役に立ちます。noexceptへの引数は定数式でなければならないというエラー メッセージに加えて、次のように表示されます。

それで...これは2パスコンパイルの問題ですか?コンパイラーがクラス内のすべてのメンバー関数を定義する前に宣言しようとしているという問題はありますか? (クラスのコンテキストの外では、どちらのコンパイラもエラーをスローしないことに注意してください。) これには驚きました。static constexpr直感的には、クラスの内外を問わず、すべての定数式でメンバー関数を使用できない理由がわかりません。

0 投票する
1 に答える
2264 参照

c++ - C++11、「noexcept」指定子、定義と宣言

宣言された関数に指定子noexcept( noexceptnoexcept(true)noexcept(false)、または または に評価される他のものnoexcept(expr))があるが、それが別の場所で定義されている場合、定義で指定子を再度指定する必要がありますか、それとも前方宣言でのみ指定する必要がありますか?truefalsenoexcept

0 投票する
2 に答える
1585 参照

c++ - C++ は「noexcept」指定子と「noexcept(false)」を省略していますが、正確な意味は何ですか?

関数をnoexcept(false)、または false と評価されるその他の式としてマークした場合、それはどういう意味ですか? (1) 関数が例外をスローできることをコンパイラーに保証していますか? (2) または、関数が例外をスローできるかどうかについて何も保証していませんか?

noexcept最後に、指定子を省略した場合、それは と同等noexcept(false)か、それとも上記の (2) の意味のみと同等か?

0 投票する
2 に答える
452 参照

c++ - クラスnoexceptの外で定義されたデフォルトコンストラクタを作成する方法は?

としてマークされたコンストラクターは、可能な限り=default「試行」することを知っています。ただし、クラスのnoexceptで定義すると、次のコードからわかるように、もはやそうではありません。noexcept

=defaultクラスの外でそのようなコンストラクターを定義して作成するにはどうすればよいnoexceptですか? noexcept(false)そして、クラスの外で定義されている場合、なぜそのようなコンストラクターなのですか? この問題は、スマート ポインターを介してPIMPLを実装するときに発生します。