http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52995
--- Comment #2 from Rafael Avila de Espindola <rafael.espindola at gmail dot com> 2012-04-15 12:28:44 UTC --- (In reply to comment #1) > http://gcc.gnu.org/gcc-4.7/changes.html > "The ELF symbol visibility of a template instantiation is now properly > constrained by the visibility of its template arguments (bug c++/35688)." I agree that a hidden type H should make A<H> hidden. The problem with this example is that A is already declared hidden. I can see an argument for both _ZN1AI1DE3barEv and _ZN1AI1HE3barEv to be hidden or default, but it is really strange to change only one of them.