https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110000
Florian Weimer <fw at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |fw at gcc dot gnu.org
--- Comment #5 from Florian Weimer <fw at gcc dot gnu.org> ---
How hard is this to use in practice? With current Clang, this:
“
template <class T>
class S {
__attribute__ ((visibility ("hidden"), exclude_from_explicit_instantiation))
int f1 ();
int f2 ();
};
template <class T> int
S<T>::f1 ()
{
return 1;
}
template <class T> int
S<T>::f2 ()
{
return f1 ();
}
template class S<int>;
”
still inlines S<int>::f1 into S<int>::f2. This may not threaten future
evolution of the implementation in this particular case, but it would certainly
be helpful to have some guides similar to
<https://community.kde.org/Policies/Binary_Compatibility_Issues_With_C%2B%2B>.
Clang's attribute documentation describes what happens, but it doesn't comment
on the actual implications for ABI compatibility.