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

    <tr>
        <th>Summary</th>
        <td>
            Clang template template arguments: aliases not desugared
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

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

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

<pre>
    ```
template<typename> class A;
template<typename T> using B = A<T>;

template<template<typename> class T>
int varTemp = 0;

int main() {
  varTemp<A> += 4;
  varTemp<B> += 6;
  return varTemp <A>;
}
```

clang returns 4, gcc returns 10.  I.e. clang is forming a separate instantiation for the alias argument vs. its underlying class template argument.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJx9UsuO3CAQ_Bp8acVisPHjwGEeiZT7_kCP3bZZYTwCvNH8fcDz2ElWiYRwQ1dVFyWfl_6qWMXvi58Y3weaLwYDseIYrheyOMfyO3QGvYc9Kw7_hMFbAq5e2xEOwIpTgh_T5ZP1lfu_aRt1Y2gb4APdW0RvwvwvxdSfUVsmGiZaYPW9Cw9W1N8nYSYOiV8--a-IwwuiekE4CquzLwY2rU8L9ele_JnkbY9PiXncJHwcLI4wdt3zYsdzgJ855XADag_D4uaUIYKnC7qYDmjrA9qgMejFJgCEiQCNRg_oxnWmFJDPQQcPq-3JmWuSuOX4CPkJzTNSu0q2TV1XdZv1qujbosUs6GBIHTcjT9IXtmfF_jabPNglQE9-HdFRn63OqCmES4Iw8SOuUYdpPefdMseDMR-Pz7eLW96pC_GovV_Jx0JWbVNmk5L1uRvk0HHk5a6rJEpsZEd9OSBKLsrM4JmMV0wemBCWfsEmEWsmT5lWggvBG17vCl7LJh-qtqViVyHvShz6ipWc4s9i8uQjX9yYObVZOq-jj02jffCfzZigHi3RNi7q4xqmxaneUVfIOttGq836b2gmBLc">