<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/90209>90209</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
CTAD: parameter pack assertion crash when synthesizing deduction guides for alias
</td>
</tr>
<tr>
<th>Labels</th>
<td>
c++20,
clang:frontend
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
hokein
</td>
</tr>
</table>
<pre>
Example:
```
struct Key1 {};
template <int i>
struct Item {};
template <class... Ts>
struct List {};
template <class Key, class L>
struct TemplatedClass {
template <class... Items>
TemplatedClass(Key, Items...);
};
template <class Key, class...Items>
requires(sizeof(Key) > 0 && (sizeof(Items) && ...))
TemplatedClass(Key, Items...) -> TemplatedClass<Key, List<Items...>>;
template <class T>
struct HasTemplateParam {
template <class Key, class... Items>
using Alias = TemplatedClass<Key, List<Items...>>;
};
struct Mod1 : HasTemplateParam<Mod1> {
using Foo1 = decltype(Alias{Key1()});
};
```
https://godbolt.org/z/fssjafzYe.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyclMGOmzAQhp9muFiLYEwgHDgkJKhVt1IPufTowBC86-DUNm2Tp69M2GbLtt1tJUREZuafb-bHCGvloScqYLGGxSYQg-u0KTr9SLIP9ro5F9vv4nhSBHwF0Qaip3saTdf4aJ0Zasc-0DlmkK0h2wBfs-cFjo4nJRwx4KXsHZPAt7_Uvnd0vNX-qbRWwtowDNnOzgXupXVvFPCggCW7PtzPlXZTflOOca85hhn7LYonv9HMqgGXU7MxLQxDwPzG94-sYRjOujFDXwZpyDey8kK6feqYM-BbFjHAFDBlz-NXDZ9xjU1UmF9F3zABu_Pis0ReToneCuDlz3y-Ha9XBt3NfXgn7FOHT8KI4zMnXl3T3BU2WNkf2EpJYRnwzf-yvzBsYv2om5gBX72ABl76mF_XDf8KU2kdjywN1cqdTwS4HAEhW_ujBLj0nmSbv78ys7N4vXfOnaw_tFgBVgfd7LVyoTYHwOoCWLXWPoj28pnCoCl4k_NcBFTEWZzEPFvmSdAVGdY8jhEjShKeZFkbNUm-WMZpyxfI4zaQBUaYRAmmMcdkwcM8rdOaOKWLeJ9jKyCJ6CikCpX6evTNA2ntQEUeYZQHSuxJ2fHTg1gDrgHXGAEiYOn_UaI_AF-1RveO-sYHFpvAFF7sbj8cLCSRktbZm7yTTlFR7lYbb8XJ758cGXYS9SMT1pJxUvesNsJ27FtHPbPn3nVk5cUb0lAz1GPGYZANWdZqw8T4ygSDUcVsqdJ1wz6s9RGw8gjTz93J6AeqHWA1jmsBq3HiHwEAAP__Ef2YYw">