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

    <tr>
        <th>Summary</th>
        <td>
            Incorrectly accepting `Class<TParam>()` constructor which was made an explicit error in C++20
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            c++,
            c++20,
            clang:frontend,
            accepts-invalid
      </td>
    </tr>

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

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

<pre>
    > See [GCC #105419](http://gcc.gnu.org/bugzilla/show_bug.cgi?id=105419).

It seems that C++20 made

```c++
template <class T>
struct C {
  C<T>(T) {}
};
```

invalid, but as of Clang 14.0.0, it is still accepted.

Godbolt: http://godbolt.org/z/59azWTKqM
Godbolt for falsely assumed regression in GCC: http://godbolt.org/z/rrbae9P5d
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyNk01vnDAQhn-NuYyCjL3sx4FDwjZRVFWK1Eg9VsYewJXBW9skTX59B9hkk54qGfB4hvE7z9iNNy8Vk1_gOyKw8uauroEJWfByUxxYeWRi36d0YvKaiVsandZ5N065Dx1ZzdS9WucUTWPvn3-SnevOMnlrDZPHcxZxyBk_Mn69vu8TRMQhQupVgpqJGxqCw6AMfoxjW74OvYasqwmHk1OJxMpaOxUjPJL81RdTmDSlBLY7RwPll_USIfaPpGRx7Y7nHWgib_7Z7aMEOz4pR6WIGpopgYrgW6idGjsoNjnP-eyxCWyEmAgEKK3xlNB8KvjOm8a7RAzhM8t1_czylZ7yoF5_PH79_e3Tj9D6AK1yEd0LaYjTgAYCdgFjtH4EOwK17T_Sh9AoPDyUJjOVNAd5UFmyyWF1P2ofAuo0b7CUYKlEglHPhGeCDyqoYcVIFMkD2o8rbxL33FvdwzPxmZsIagT8c3JWExoMgQJI4nujsym4alYaL1Jt6qcm134gw7mnt8_VKfhfJItMS3VjnBmVxXaT9RXfCyVavt0W5U7qnTCy3Le45W1pWoU7njnVoIsVHWomxNsZEmJu2WVB8A9Lc2NJUxv8mHA0F8_KJF69nwdBVyOzleBC8I3YF4Wkac5NWzQbLveF2RYcJdtwHJR1-VzL3IcsVEtZdE8iOZ2NKV6chNp2I-IimfKrKfU-VAQ3njDY9JItEKqFwF-tlRnn">