On 5 May 2015 at 05:58, Andrew Pinski <pins...@gmail.com> wrote: > These two are bogus and really clang in GCC's mind. The main reason > is the standard says struct and class are the same thing.
Apart from the fact that classes are private by default and structs are not. They may be similar for layout purposes, and it may be ok to interchange them on local re-declarations when the compiler doesn't need the type completely defined, but they're not the same thing. The compiler might be smart and use the protection model that the original declaration used (private/public), but what that warning is saying is that you have refactored your code to include classes and forgot to update all uses, which is a very valid warning. I can't see why one would *want* to keep the "struct" keyword. If you're already compiling in C++ mode, removing it from variable/argument declarations should be valid, and re-declaring incomplete types should be made as class. cheers, --renato