5
はのは、たとえばコンパイラは関数のnoexcept'nessを決定できますか?
class X
{
int value;
public:
X (int def = 0) : value (def) {}
void add (int i)
{
value += i;
}
};
明らかに、機能void X::add (int)
は任意の例外をスローすることはありませんがやってみましょう。
私の質問は、コンパイラがコードを分析し、関数がnoexcept
としてマークされていなくても、例外を処理するマシンコードを生成しないことを決定できますか?
私は興味があります、なぜあなたはこれを知りたいですか? – Randy
コンパイラによって生成されたコードをチェックしましたか? –
関数は 'const'か' constexpr'かどうかを知ることができます。結局コンパイラだ。それが本当に*しているのか、それを使うのか*という情報は別の質問です。 –