[Bug c++/55361] New: Access control in templates only happens when instantiating a method

joerg at netbsd dot org gcc-bugzilla@gcc.gnu.org
Fri Nov 16 22:25:00 GMT 2012


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: unassigned@gcc.gnu.org
        ReportedBy: joerg@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.



More information about the Gcc-bugs mailing list