diff --git a/gcc/cp/parser.cc b/gcc/cp/parser.cc index 4685a9ab80f..89d2b9e692f 100644 --- a/gcc/cp/parser.cc +++ b/gcc/cp/parser.cc @@ -34241,7 +34241,7 @@ cp_parser_lookup_name (cp_parser *parser, tree name, parse, those errors are valid. */ decl = lookup_member (object_type, name, - /*protect=*/0, + /*protect=*/2, /*prefer_type=*/tag_type != none_type, tf_warning_or_error); else diff --git a/gcc/testsuite/g++.dg/tc1/dr176-2.C b/gcc/testsuite/g++.dg/tc1/dr176-2.C new file mode 100644 index 00000000000..b639aaf0c16 --- /dev/null +++ b/gcc/testsuite/g++.dg/tc1/dr176-2.C @@ -0,0 +1,13 @@ +// { dg-do compile } +// PR c++/122509 + +namespace s { + template + struct v { + void size() {} + }; +} +struct D : public s::v, public s::v {}; +int main() { + D().v::size(); +}