http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55361
Bug #: 55361 Summary: Access control in templates only happens when instantiating a method Classification: Unclassified Product: gcc Version: 4.7.2 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassig...@gcc.gnu.org ReportedBy: jo...@netbsd.org Consider the following example: class C { bool blocked; }; template < class > struct F { void operator* () { C a; a.blocked; } }; int main() { F<int> x; } The operator is violating the access specifications of C, but this isn't detected until it is actually used. Nothing in it depends on the template though, so this check should happen earlier.