On 25/01/2012 03:27, Rafael Ávila de Espíndola wrote:

> Sorry, one more case that gcc accepts where it is not clear what the
> result should be:
> 
> -----------------------------
> #pragma GCC visibility push(protected)
> 
> int x;
> class  __attribute__((visibility("hidden"))) foo {
>   static int a;
> #pragma GCC visibility pop
>   static int b;
> };
> int y;
> 
> int foo::a;
> int foo::b;
> -----------------------------
> 
> Should this be reject (as happens with namespaces)? If not what is the
> expected result? Currently we get
> 
> x -> protected
> y -> default
> a -> hidden
> b -> hidden

  According to the manual:

>      In C++, `#pragma GCC visibility' affects only namespace-scope
>      declarations.  Class members and template specializations are not
>      affected; if you want to override the visibility for a particular
>      member or instantiation, you must use an attribute.

  Looks like it's working to me.

    cheers,
      DaveK

Reply via email to