Clang-cl error on missing exception specification 'throw()' #25639
Labels
bugzilla
Issues migrated from bugzilla
clang:frontend
Language frontend issues, e.g. anything involving "Sema"
Extended Description
Clang-cl will produce an error when a definition doesn't match the declaration containing a 'throw()'. I believe this is correct behavior, however MSVC will silently ignore this and compile. This was originally seen attempting to pull in the atltime.h header, but can be reproduced with the following:
class Foo {
int Bar() const throw();
};
int Foo::Bar() const {
return 0;
}
1>Source.cpp(7,10): error : 'Bar' is missing exception specification 'throw()'
I expect clang-cl with the -fms-extensions option should allow this to compile with a warning, as it's very difficult to change the ATL headers.
Note: Flipping the throw specification to the definition seems to produce an expected warning:
class Foo {
int Bar() const ;
};
int Foo::Bar() const throw() {
return 0;
}
1>Source.cpp(7,10): warning : exception specification in declaration does not match previous declaration [-Wmicrosoft-exception-spec]
The text was updated successfully, but these errors were encountered: