We correctly diagnose the invalid access since r11-1350. gcc/testsuite/ChangeLog:
PR c++/16617 * g++.dg/template/access36.C: New test. --- gcc/testsuite/g++.dg/template/access36.C | 25 ++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 gcc/testsuite/g++.dg/template/access36.C diff --git a/gcc/testsuite/g++.dg/template/access36.C b/gcc/testsuite/g++.dg/template/access36.C new file mode 100644 index 00000000000..72ca23c7017 --- /dev/null +++ b/gcc/testsuite/g++.dg/template/access36.C @@ -0,0 +1,25 @@ +// PR c++/16617 + +class B +{ + protected: + int i; +}; + +template <class T> void fr (); + +class D2 : public B +{ + friend void fr<int> (); +}; + +template<int B::*> struct X +{}; + +template <class T> void fr () +{ + X<&B::i> x1; // { dg-error "protected" } + X<&D2::i> x2; // { dg-error "protected" } +} + +template void fr<char>(); -- 2.31.1.362.g311531c9de