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]
Drivehappy, can this be reproduced just by including atltime.h ?
(In reply to comment #1) > Drivehappy, can this be reproduced just by including atltime.h ? Yes it can, and was originally where I observed it - through several methods in the CTime class. I had added my reproduce code to display the issue more easily.
Mark, I don't believe you have attached anything.
Created attachment 15128 [details] Small reproduce case, build clang-cl with /EHsc I've attached the reproduce case. I've realized this also requires the MSVC exception flag to clang: clang-cl /EHsc Source.cpp
Fixed in r250854