<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">