Hello, When I write classes in C++ and use the Pimpl idiom, I generally set the structure up like so:
Foo.hpp ------- class Foo { public: Foo(); ~Foo(); void method1(); void method2(); private: struct impl; std::unique_ptr<impl> p; }; Foo.cpp ------- struct Foo::impl { method1() { .... } method2() { ... } private_thing() { ... } } Foo::Foo():p(make_unique<impl>()){} Foo::~Foo(){} void Foo::method1(){ p->method1();} void Foo::method2(){ p->method2();} I'd like to hide some of the symbols for the implementation, so I compile with -fvisibility=hidden and add __attribute__((visibility("default"))) to the "class Foo" definintion. My question is whether the visibility attribute applies to the methods of the nested impl struct and makes all members visible or whether they stay hidden. Thanks, Paul B.