https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61816
Bug ID: 61816 Summary: Member functions of a template class can access private classes without permission Product: gcc Version: 4.9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: myriachan at gmail dot com Host: x86_64-unknown-linux-gnu Target: x86_64-unknown-linux-gnu Build: x86_64-unknown-linux-gnu There exists a case in which a member function of a forward-declared template can access a private inner class without permission. Possible duplicate of bug 41437. class ClassWithEverythingPrivate { class InnerClass { public: static int InnerFunction() { return 123; } }; }; template <typename T> class TemplateClass { public: static int StaticFunction() { return ClassWithEverythingPrivate::InnerClass::InnerFunction(); } }; int main() { return TemplateClass<void>::StaticFunction(); }