http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50270
--- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> 2011-09-01 19:59:18 UTC --- Small testcase: template <class a> class __attribute__ ((visibility ("default"))) vector { public: vector(){t=2;}; void push_back(a){t++;}; int t; }; class __attribute__ ((visibility ("hidden"))) Foo { public: int m() { return 0; } }; int main(void) { vector<Foo> v; v.push_back(Foo()); return 0; } Everything should be hidden except for main().