__attribute__(nothrow)
gnu 拡張をサポートする C++ コンパイラを使用する場合と、関数を宣言する場合の違いは何ですかthrow()
(たとえば、Linux では g++ 自体; C++03)。
私が理解しているように、両方のバリアントは、この関数が例外をスローしないことをコンパイラーに伝えることです。ただし、実装は異なる場合があります
コンパイラはこの情報をどのように使用しますか?
notrow またはthrow()
関数内で実行中に例外をスローし、この例外が関数にまで及ぶとどうなりますか? 関数はさらに例外を渡しますか、それとも例外などを非表示にしますか?