<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/79798>79798</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
improve the AST for the synthesized deduction guide
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang:frontend
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
hokein
</td>
</tr>
</table>
<pre>
Given the following CTAD code:
```
template <typename T>
struct C {
template <typename U>
C(U);
};
C c(1);
```
The synthesized deduction guide from the constructor is:
```
|-FunctionTemplateDecl implicit <deduction guide for C>
| |-TemplateTypeParmDecl <line:1:11, col:20> col:20 typename depth 0 index 0 T
| |-TemplateTypeParmDecl <line:3:15, col:24> col:24 typename depth 0 index 1 U
| `-CXXDeductionGuideDecl <line:4:5, col:8> col:5 implicit <deduction guide for C> 'auto (type-parameter-0-1) -> C<T>'
| `-ParmVarDecl 0x555d18fe4638 <col:7> col:8 'type-parameter-0-1'
```
Note that the function parameter type is canonicalized to `type-parameter-0-1`, this is suboptimal. I think it is better to show a normal `U`.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyUlFGP4yYQxz_N-GXkCINtnAc_5JzLqS9VpWareyX2JKaHwQK8d9tPX-Fks7vtdtWTEkKAmd__PxpQIeiLJWqh-gTVPlNLHJ1vR_eNtM1Obnhqv-hHshhHwrMzxn3X9oLdcbfH3g0EYgdsD-x5rNnts_6NNM1GRUIQXXyayaqJ8Aji83U7RL_0ETsE-em6goj4btDDPSgd6YA3D8C3IG5xIPf3eYc98KZ4s_1W1nU8joThycaRgv6LBhxoWPqoncXLogfCs3fTart39qrUedThY8cgu_yw2DXP8WZkT71B1NNsdK9jsvUvlPPY3R2CTBXp8uf449NMvyk_rXlAdEbbVPcifQvgHfbOgNhxBuLzfY730g00xxEZajvQD2R4_CmKSJTqFaV8RSn_i1LgwytKzfLu69f9s-kvyfM_MCWI3StK8wKp_lflELhUS3QIvEma8ll5NVEkn7M89QLm6VQHolv7j8u3-pLzP5RfVbEfVVUNRXOmshZNol6VyBdRTeK9x5EfNNyvLhLGUcXrZbp1Cd4zrMVEHbBX1lndK7P2ZTJVs3dgNUsFi6MOKSgsJzdHPSmzwV_Sqv2GOqadE8U1u8Mwuu-o0Do_KZOyPkDNNld12dCKYSu2KqO2kKyuOBNcZmN7qoeyrxpBdaNI9bzoSclCKNlIweptk-mWM16ygm_ZlldcbpgkVjUlVXRuzmcaoGQ0KW02xjxOG-cvmQ5hoVZu5bbJjDqRCesDxHlvlL2A2J29s5HsAJynZ8m3KTQ_LZcAJTM6xPCSLOpoqNXT7N0jrbXd_X5cOyN-fMWzxZt2jHFeLzU_AD9cdByX06Z3E_BDItx-8tm7P6mPwA-r9gD8sMr_OwAA___BfZbk">