<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/55855>55855</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
clang++ behaves non-standard with crtp template
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
pmqtt
</td>
</tr>
</table>
<pre>
Description:
The following code should be compile. This is valid C++ code and the g++ compile it.
```
template<class T>
struct Base{
using PARAMETER = typename T::PARAMETER;
};
template<class T,class Y>
struct Derivated : public Base<Derivated<T,Y>>{
using PARAMETER = Y;
};
int main(int argc,char **argv){
Derivated<int,float> k;
}
```
Produces following output:
```
error: no type named 'PARAMETER' in 'Derivated<int, float>'
```
Version of clang++ is:
```
clang version 13.0.1
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyFk19vmzAQwD-NeTkVETtA8sADbdq3SVUVTdqjMRfw5tjMNqn67XdAknZd20UnON_fX3xH49qXimU7ltU7DMrrIWpnmagX275HODhj3LO2HSjXIoTejaaFBul4HLTBFPa9DkBykka3cMf4LckSLW0LkYp0V-OcAzqmS4fzs8jOMh8jHgcjIzJxp4wMAfZM3C-uEP2oItzKgKy8XWxAvzFMhI_1U_3tfn__BEzsIL4MaOURp_Sa5Opl4pzJyt2r_llrftZ-vIfYodcnim2pWw3D2BitFjJxd_WRPpWYk0n-x_zjCzZtIxyltoxvJlX6Tk1wvfTAeE1ClhPj27-avAWhLEo4GCcjscCvd_Wnjh-NY3k-eteOCsObhXBjHMZ43ZZ3aei989PNWDePAqZZ0F3x8nUQvARtJ9O_mHDhJO8XWN_RB1pZcAegMdnLounwGdYcBadz2kqkWbr6MDBpK9FuxVYmUUeD1dvyDfbyRHdhnb0JkbZc-haedexB-TjAZYsgGb2p-hiHGYc_kHQUNTYpfQl0MOZ0ed0M3v1ERX_9QYcwYiAlzzd5nvSVKtqmLDIlVkVWNJssF3neSNWU-XqbZ6pNjGzQhIrlRMctPsNcgnSW7xJd8YzzrMjEiq_5ukwPYoPbArfykB_KctWwdYa0WCadOFLnu8RXM1IzdoGcRocYXp30MejOIs7tqL4cY-98NRx_x5jMjasZ_A81o0Zd">