From my perspective
extern "C" { struct S { }; }
is not turning the C++ compiler to define a C program. So, the issue
here is whether it would cause a portability problem with C programs
-- this is a very rare case of C/c++ compatibility. It also appears
that the definition of S is permitted in GNU C with completely a
different meaning. Consequnently, the warning -- if we must have a
warning -- should not be confined to the C++ front-end...
Richard G. made a comment that I find quite appropriate. If we are
going down this road, then we should start warning C codes.
Especially, sizeof ('a') and such. The arguments for this patch hold
verbatim. Hence, the question is what kind of consistency are we
after?
I don't agree that it should be in -Wall though.