----------------------------------------------------
class A {
    class __attribute__((visibility("hidden"))) B {
    };
    B v;
};

int main (void) { A a; return (0); }
----------------------------------------------------
Compiling the above code with 4.2.0 20070207 generates:
----------------------------------------------------
ex.cc:1: warning: 'A' declared with greater visibility than the type of its
field 'A::v'
----------------------------------------------------
4.0.2 did not generate this warning. I believe this is a bug because A::v is
private and thus does not have to be visible to anyone but A. In fact, the best
solution, IMHO, is to make all private members hidden by default, since they
can not be accessed from outside anyway. The only time the warning would still
be valid is if there are friends in the class.

This may be related to the ADA bug <a
href="http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24167";>24167</a>.


-- 
           Summary: Warning received when private class has hidden
                    visibility
           Product: gcc
           Version: 4.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: 9ugsa9j02 at sneakemail dot com
  GCC host triplet: x86_64-pc-linux-gnu


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30842

Reply via email to