Now that we have stopped treating *this as a dependent scope, we need to avoid giving errors for not finding things when we have dependent bases.
Tested x86_64-pc-linux-gnu, applying to trunk.
commit d553bc7ff104a8d973c3f48c005457038422db26 Author: Jason Merrill <ja...@redhat.com> Date: Fri Jun 17 12:16:00 2016 -0400 PR c++/71209 - wrong error with dependent base * typeck.c (finish_class_member_access_expr): Avoid "not a base" warning when there are dependent bases. diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c index 2ccd2da..3704b88 100644 --- a/gcc/cp/typeck.c +++ b/gcc/cp/typeck.c @@ -2797,6 +2797,8 @@ finish_class_member_access_expr (cp_expr object, tree name, bool template_p, return error_mark_node; if (!access_path) { + if (any_dependent_bases_p (object_type)) + goto dependent; if (complain & tf_error) error ("%qT is not a base of %qT", scope, object_type); return error_mark_node; diff --git a/gcc/testsuite/g++.dg/template/dependent-base1.C b/gcc/testsuite/g++.dg/template/dependent-base1.C new file mode 100644 index 0000000..392305b --- /dev/null +++ b/gcc/testsuite/g++.dg/template/dependent-base1.C @@ -0,0 +1,10 @@ +// PR c++/71209 + +struct A { + int table_clear; +}; + +template <typename T> +struct B : T { + B() { this->A::table_clear; } +};