<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/125913>125913</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Alias template CTAD is erroneously allowed in C++17 mode
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
PJBoy
</td>
</tr>
</table>
<pre>
Alias template CTAD is a C++20 feature ( https://en.cppreference.com/w/cpp/compiler_support/20#cpp_deduction_guides_201907L ) recently introduced in clang v19. Seems it's being allowed in C++17 mode with no diagnostic ( https://godbolt.org/z/x7zdxnrqx ). Though a (almost correct) diagnostic is issued with the `-Wpre-c++17-compat` flag ( https://godbolt.org/z/acKsG3dfj ).
Testcase is replicated here
```
template<typename T, typename TT>
struct S
{
T t;
TT tt;
};
template<typename T, typename TT>
S(T, TT) -> S<T, TT>;
template<typename T>
using S_int = S<T, int>;
int main()
{
(void) S_int{1, 2};
}
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJyUU12PqzYQ_TWTl1EiMw4BHnjIx6ZS24dKQepj5JgJ-MrY1Da7m_vrK7LZZlX1qq2EgLFnzpz5OCpG0znmGvId5IeFmlLvQ_3bzzt_W1x8e6u31qiIiYfRqsS4b7YHNBEV7oF2QDsSeGWVpsAIVGKf0hhBboGOQEd2Kz2Oga8c2GleaT8AHd-Ajnoc57cfRmM5nOM0jj4koCMJIKnH8dxyO-lkvDt3k2k5nklklSh-RaAKA2t2yd7QuBR8O2lu0TjUVrkOX7NqhSfmIaJJQEXECxvXobLWv304PshnBQ6-ZXwzqUfnsTWqcz4mo_-hmM63F2_TyocO6Pgd6PhefG_fXfjjfea0wqb3U9ejmmOVHXxMqH0IrNNM-Qu2iWhinLj9SJx6RtiI5e9j4KX-ZLacm6MSbARerer-EyGlf4k_yfb67U4IxBbEtuGYtIo8Zw08WqNV4hZ7Djw7bMTjEdvPIYPcp9vITg2MDdAen1YD8gXENqYw6YSnGaDYgdgiIjaYQP5lNJgeJhSHx8__SXECKu83TTN3bwnyBU8g959n8uVfQO8oU5wHfzoblxDk4YlgXPoKMd8PyjigEqh6lgVUvnrTzgzuIFDssjmcnkUVh69tXLS1bCtZqQXXWSHLoqQyrxZ9vamulEmpr_lG5xvaaLnOMnmRa67KPBNqYWoSlAsSeVZl66xccVldq3K9qXK9LstKw1rwoIxdWfs6zENf3JeoziivMrmw6sI23oVM5PjtY8WAaNZ1qOeg5WXqIqyFNTHFJ0wyyfKPhM4heMd-ivb2YwEtpmDrvy2nSf10eSh-TvX4LMfgv90lcbwTjEDHRwWvNf0ZAAD__yKPZLc">