// { dg-do assemble } template class S { protected: template void f(U); // { dg-error "" } is protected private: template void g(U); // { dg-error "" } is private }; void f() { S s; s.f(3); // { dg-error "" } within this context s.g(2.0); // { dg-error "" } within this context }