http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47877
Summary: -fvisibility-inlines-hidden does not hide member template functions Product: gcc Version: 4.5.2 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassig...@gcc.gnu.org ReportedBy: ogoff...@kde.org Created attachment 23450 --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=23450 testcase struct __attribute__((visibility("default"))) Foo { inline void foo() {}; template <class C> inline void bar() {}; }; int main() { Foo().foo(); Foo().bar<Foo>(); } /* $ g++ main.cpp -fvisibility=hidden -fvisibility-inlines-hidden $ objdump -t a.out | grep Foo 00000000004004fc w F .text 000000000000000a .hidden _ZN3Foo3fooEv 0000000000400506 w F .text 000000000000000a _ZN3Foo3barIS_EEvv Why is Foo::bar not .hidden? Note: removing the __attribute__((visibility("default"))) (and -fvisibility=hidden) solve the problem. */