<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/88864>88864</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [Clang++][ABI] Different mangled name for clang++ and g++
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            clang
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          dongjianqiang2
      </td>
    </tr>
</table>

<pre>
    demo:

```
#include <type_traits>
template <class T>
std::enable_if_t <std::is_integral <T>::value, int>
foo() {
  return 0;
}

template int foo<int>();

```

G++ mangle it as :
`_Z3fooIiENSt9enable_ifIXsrSt11is_integralIT_E5valueEiE4typeEv`
Clang++ mangle it as:
`_Z3fooIiENSt9enable_ifIXsr3std11is_integralIT_EE5valueEiE4typeEv`

[gold](https://godbolt.org/z/Tc6YE3EzG)
I think this is a common ABI compatible issue between gcc and clang.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyMU0GPmzwQ_TXDxdrIsYHAgUNIyCqX77J7-NpLZGAg3ho7xcNWu7--MqHZqN1KlaKJGc-85_dGo7zXvUUsICkh2UdqorMbi9bZ_kUr-10r24uodu1b0eLgQG6B74H_iilfftdPIbVtzNQiA7mjtwueaFSaPMjqWkE4XIyi-b4xynv2fLvz1AZ4uUWraoMn3Z0o1N3y2p-0JexHZUJ-7pwvXpWZEMSOaUs3uM45EBmInMGmvKYYG5Gm0TIOcknBZn8v6PY-bYkFBLlbMGeoj7ZP5c_xEUQJomSDsr1Bpokpzz58S_npq-ycO-rqvyfKb1qP__vxidbrO5HH51OVzNoqXcXBzur1RrYzyvafUP0bk_TU_sH1d7IlJmXvTAvJHkR2JrrMZOIA4tC7tnaGVm7sQRzeQRyem_RLJav3x2Db3H5kdNb2W4ieac8Ua9wwOMu25TEcL4p0HWR4PyGrkX4gWtY3DVO2ZU3Qu4raQra5zFWExXqzliLlcRJH52LDZaokF7gRmezSFjMZi3STxU0uct4kkS4EFzGP1ynPY57EK0xrVDyJ01p1dZ5yiDkOSpuVMa9DEBLNDymyLEvjyKgajZ-3RIjm6r0ICzMWof6hnnoPMTfak_9AIE1mXq27aQX7knJbHiHZs73uOhzR0jLDllk1IOvcyJq7AQcDlnM0jab4zXxN56leNW4AcQjcy9_DZXQv2BCIwyzFgzjMan4GAAD___TUMCc">