<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/75248>75248</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Error message on missing `typename` in parameter pack expansion does not note lack of `typename`
</td>
</tr>
<tr>
<th>Labels</th>
<td>
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
pkasting
</td>
</tr>
</table>
<pre>
In the following code:
```
template <typename... Ts> struct S;
template <typename T>
using U1 = S<T::Type>;
template <typename... Ts>
using U2 = S<Ts::Type...>;
```
Both `U1` and `U2` are missing `typename` inside the `<>`. The compiler helpfully suggests I add it for `U1`. It does not do so for `U2`. I think it should. This would have saved an hour of my time today tracking down what was wrong and how to fix it, since I'd never tried to using a member type alias inside a parameter pack expansion before.
Live example: https://godbolt.org/z/3c8aWMEnb
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyEU0FvszgQ_TXmMioCG0hy4NCmiRRp97Sp9mzwAN4YG9lDUvbXfzJt06-Vqk9Cwmbmvef3PMgQdG8Ra1Y-sfI5kTMNztfTRQbStk8ap5b6ZIEGhM4Z427a9tA6hUw8suyZZY-syt6fdUs4TkYSAhN7Wia0csQ0TeEcmDhAID-3BP8w8fSO_hEEZyYOb-U5RNWXHJh4jtj9OaqLx_MyYWz6M9n9BF8I-Sdh-GRM0_QL6Vd_T44GYFX2krMqA2nVuuHrxiOMOqzcrMo-tGNJ26AVrjFGJrGPClWWwnlAaN04aYMeBjRTNxuzQJj7HgMFOIFUCjRB5_xdNoUTgXIYwLq4gODudf5WBxq0vURgGNxsVFTSAW5xDYO8IgR5RQXSwuBmD66DcQHSIwI5JRcgL9tLdKLczcJtkAQ3GeDmne1X24O7ATno9CtoYnwPQdsW4cT4RoHFK3ogr1HFpre8JYw4NvH7MiFIo2X4CEbCJL0ckdDDJNsL4OskbdDOQoOd85j-fsN_6SsCvspxMnEOYSCa1gvkR8aPvVONM5Q63zN-_J_xo2i38t-_D7ZJVC3UTuxkgnW-yXiRb8qySIYay12Jebfd8G7bcVkUQmyLLlM7Japsk7eJrnnGRc5zzvOiLIt0h1htOaqsUqLYVQUrMhylNqkx1zFqJzqEGetNyYttYmSDJnz8Zb6OTQ_N3AdWZEYHCp8w0mSwPnjvPIwYguwRnP15sH5O7j4h1hGCiUXXfSNIZm_qb_lpGuYmbd3I-DEe6_31MHn3H7bE-HG1Fhg_ru5-BQAA___usFh3">