次のコードがあります
int main()
{
void f() throw(int);
f();
return 0;
}
void f() { }
GCC と clang はそれをうまくコンパイルします。しかし、標準には次のような段落があります。
n3376 15.4/4
関数の宣言に、すべての例外を許可する noexcept-specification ではないexception-specification がある場合、その関数の定義と明示的な特殊化を含むすべての宣言には、互換性のある exception-specification が必要です。
次の例: gcc - エラー、clang - 警告
void f() throw(int);
int main()
{
f();
return 0;
}
void f() { }
これらのスニペットに違いがあるのはなぜですか? ありがとう。