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

    <tr>
        <th>Summary</th>
        <td>
            Failing to instantiate some members during an explicit instantiation
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            c++,
            clang:frontend,
            ABI
      </td>
    </tr>

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

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

<pre>
    Consider the following code:
```
template <class RealType>
class TestLib {
 public:
  TestLib();
  void print();
};
template <class RealType>
TestLib<RealType>::TestLib() {}

template class TestLib<double>;

template <class RealType>
void TestLib<RealType>::print() {}

template class TestLib<float>;
```
When compiled with Clang, only `void TestLib<float>::print()` is instantiated, but when compiled with GCC, ICC, and MSVC, `void TestLib<double>::print()` is also instantiated. I believe Clang is incorrect per http://eel.is/c++draft/temp.explicit#10 and should also be instantiating the `double` version of `print()`.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyVk02PmzAQhn-NuYyKHMjngUPCNlWk9tKu2rONh-DK2Mg22e6_7wCb3bC7rVrFCp4P3nlmbKRTj0XpbNAKPcQGoXbGuAdtz1A5hSzfM37H-J6t-dMazYhtZ0REYHlZGRECfEVh7h87euPjlDK57zHEz1oC2xwmN3S9NLp6FoZrCsu2LNux_JoHF6cVdF7b-CrENnfP-38Auern5W2I6uf7WemRkaSnGnP1WTOkpBx1Mekc3n3hzzhjW39huun4f4hq40ScAc1P7EeDlo607bRBBQ86NlAaYc8sK8FZ8wiU-QrtRfIVF6WCDqBtiMJGTThqkJF9hIe3ZT6V5RA9TQ9hFXz59n3cvy15M9f3awoT3KxwCieQaDRecGpoIquc91hF6OhaNzF2g152pIVoUh1oU7HsQEt5UVOJ4zDYFH91dDc12fmCj6ihcb1RU1mJN5WHL2T4XojrCZoAL-iDdhZcPfjn9Gmiilzt8p1Ioo4Gi6PQZlSZNQTBtQgttpK0QPV-SBEWrmi3CM4mvTfF0F94bvBMM-9lSmdAhjGX6-ND591PGgmZOoQehxmsVpvdMmmKOlvLbFFxWe_qLd9lslbrxXa9kXy5rcRGJEbQjEPBVjSy7GlytBsPkRzjRcr3tXc2olUvkf3hNBiru0QXGc8yvsoXi5zTL13mnK_XijybJcdqy-i_pZGkA2zq_Dnxxcgt-3OgoNEhhpcg3X59togjE-mLPjbOF3tBDAdhTCtsMvZZjE3-BirbhJA">