https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66159
--- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> --- This keeps biting me in the Filesystem library, where I need to use an elaborated-type-specifier to refer to struct stat, to disambiguate it from the function int stat(const char*, struct stat*) struct stat { }; extern "C" int stat(const char*, struct stat*); namespace filesystem { typedef struct ::stat t1; using t2 = struct ::stat; } I could just say "struct stat" instead of using the nested-name-specifier, but being explicit about the scope seems better. Would fixing this need another global boolean like processing_explicit_instantiation, so the warning can be suppressed when processing_alias_declaration is true? Would it be OK to make this warning depend on -Wredundant-decls so it can be disabled with a #pragma?