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.

Reply via email to