<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/131511>131511</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
error: implicit instantiation of undefined template
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
oltolm
</td>
</tr>
</table>
<pre>
This is a regression in Clang 20. It didn't happen in Clang 19 and it does not happen with other compilers.
```c++
#include <utility>
namespace mcl::mp {
template <class... E> struct list {};
} // namespace mcl::mp
#include <type_traits>
namespace mcl::mp {
namespace detail {
template <class VL> struct lift_sequence_impl;
template <class T, template <class, T...> class VLT, T... values>
struct lift_sequence_impl<VLT<T, values...>> {
using type = list<std::integral_constant<T, values>...>;
};
} // namespace detail
template <class VL>
using lift_sequence = typename detail::lift_sequence_impl<VL>::type;
} // namespace mcl::mp
int wmain(int argc, wchar_t** argv)
{
using fbits_list = mcl::mp::lift_sequence<std::make_index_sequence<1>>;
return 0;
}
```
```
<source>:25:1: error: implicit instantiation of undefined template 'mcl::mp::detail::lift_sequence_impl<std::integer_sequence<unsigned long, 0>>'
25 | using lift_sequence = typename detail::lift_sequence_impl<VL>::type;
| ^
<source>:31:33: note: in instantiation of template type alias 'lift_sequence' requested here
31 | using fbits_list = mcl::mp::lift_sequence<std::make_index_sequence<1>>;
| ^
<source>:15:28: note: template is declared here
15 | template <class VL> struct lift_sequence_impl;
| ^
1 error generated.
Compiler returned: 1
```
https://godbolt.org/z/hGfMf8MzP
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJy0Vk1v4zYQ_TX0ZbCCREZRdNDB8UdRoAv0EPRq0OJIYkuRKjlKmv31BUUnsdfbpLvAGgJMkJw3770ZUpIh6N4iNqy8Z-V2JWcanG-cIWfG1dGp5-Zh0AF0AAkee48haGdBW9gYaXvgeQa_EiitLOMVwSCnCc_WixqkVaAJlMMA1r1uedI0gKMBPbRunLRBHzKWr-Nzm6enZfw-PvmacaFta2aFwMRmJm00PTOxSwFWjhgm2SKMrWFizcR6nIBV92mZcJyMpCW0NTKELMtgx8QOAvm5JTA60LK92jJxCmLVFhjfM76Hb8Kfdl3woucJD-SlpvB_ub0tKySpzTus4Y_fLjh3dAj494y2xYMeJ_NK_TrygfENXE3HyYcsyyLqS4aHl0l4lGbGk453cm5ijNgscSkkIUbQpAXmoG0P0RxgYru4zcQmkEp2aEvYe2kOrbOBpKVLOCZ2L4j3qS7v1yj5-K6HLF8nTheCFnKRZcR6gVkY_ofuhVNcj0Hf2TjaEjyNUlvG7-JY-r6Nmp_aQfoDMb5mfB1nHxmvF9TFSoCTm91RUzikxhXbC_xryuduj_IvPGir8J_z5SJVLImIWTzS7C3kb6afncuvjmkci01ws49Y0RNeMrEumFgDeu98HETXdKsJdCqylhRvEtfBbBV22qI661BeXSn6sCCXDYX-XN9sl4tOgXG2jz7nJ8G8SoJ5CazawE9qC1h-MQErd9d2iWiVENEm6wgXu-y1Ua_2LEdJGi1DdOqy1LwCH8eBUMGAHlN6UZzp-6nNE9N89PumC0VsGn537sKrYh1AYWukvxBVpKL94E35EdNEskgtDD1a9JJQxZfU5vTGOh0TjPZAcX1EBqIpROuW-6B36ugMZc73jO-_ML4ffuk-d3efv_y-Uo1QtajlCpuiuuEF53VVr4amrlTVHrvbqq2rvKyKuw7vsKtbWYq6K0qx0g3PeZmL4rYocl7WmaqPN9iVVXu8yStZc3aT4yi1yYx5HGPulQ5hxqYQRVkUKyOPaMLyAcC5xSdYVhnn8XvANzHo03HuA7vJY8OENxjSZLD5oQO-mr1pvjJH0zAfs9aNjO9jjtPfp8m7P7ElxvcLs8D4_kT9seH_BgAA___Tha_a">