Hi, According to § 11.3/1 from c++98, access delarations are deprecated:
The access of a member of a base class can be changed in the derived class by mentioning its qualified-id in the derived class declaration. Such mention is called an access declaration. The effect of an access declaration qualified-id; is defined to be equivalent to the declaration usingqualified-id; [Footnote: Access declarations are deprecated; member using-declarations (7.3.3) provide a better means of doing the same things. In earlier versions of the C++ language, access declarations were more limited; they were generalized and made equivalent to using-declarations - end footnote] Consequently, I propose to deprecate them with a warning, as clang already does. So that you get a warning for the following code: struct A { int i; }; struct B : A { A::i; // <- warning here }; warning: access declarations are deprecated; employ using declarations instead [-Wdeprecated] The warning is trivial to avoid, just add the keyword 'using' before the access declaration. Before adjusting the whole testsuite, I would like to know if there is agreement to do it at stage 3. The patch is really simple: (it does not include yet testsuite adjustements) Index: gcc/cp/parser.c =================================================================== --- gcc/cp/parser.c (revision 182209) +++ gcc/cp/parser.c (working copy) @@ -18900,7 +18900,11 @@ cp_parser_member_declaration (cp_parser* parser->colon_corrects_to_scope_p = false; if (cp_parser_using_declaration (parser, /*access_declaration=*/true)) - goto out; + { + warning (OPT_Wdeprecated, "access declarations are deprecated; " + "employ using declarations instead"); + goto out; + } /* Parse the decl-specifier-seq. */ decl_spec_token_start = cp_lexer_peek_token (parser->lexer); -- Fabien