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: [email protected]
ReportedBy: [email protected]
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.