<html>
<head>
<base href="https://bugs.llvm.org/">
</head>
<body><table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Bug ID</th>
<td><a class="bz_bug_link
bz_status_NEW "
title="NEW - ICE when binding template template arguments with constrained NTTPs"
href="https://bugs.llvm.org/show_bug.cgi?id=49702">49702</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>ICE when binding template template arguments with constrained NTTPs
</td>
</tr>
<tr>
<th>Product</th>
<td>clang
</td>
</tr>
<tr>
<th>Version</th>
<td>unspecified
</td>
</tr>
<tr>
<th>Hardware</th>
<td>PC
</td>
</tr>
<tr>
<th>OS</th>
<td>Windows NT
</td>
</tr>
<tr>
<th>Status</th>
<td>NEW
</td>
</tr>
<tr>
<th>Severity</th>
<td>enhancement
</td>
</tr>
<tr>
<th>Priority</th>
<td>P
</td>
</tr>
<tr>
<th>Component</th>
<td>C++2a
</td>
</tr>
<tr>
<th>Assignee</th>
<td>unassignedclangbugs@nondot.org
</td>
</tr>
<tr>
<th>Reporter</th>
<td>omer.rosler@gmail.com
</td>
</tr>
<tr>
<th>CC</th>
<td>blitzrakete@gmail.com, erik.pilkington@gmail.com, llvm-bugs@lists.llvm.org, richard-llvm@metafoo.co.uk
</td>
</tr></table>
<p>
<div>
<pre>The following snippet:
```c++
template<typename T>
concept C = true;
template<template<C auto...> typename Templ>
struct template_ {};
template<C auto... Args>
struct template_binder
{
template<template<C auto...> typename Templ>
using templ = Templ<Args...>;
};
using T = template_<template_binder<>::template templ>;
```
Live demo: <a href="https://godbolt.org/z/7KExM4dh4">https://godbolt.org/z/7KExM4dh4</a>
What is interesting is that removing the concept eliminates the ICE,
but clang rejects the code in this case (which is wrong).
Also,
gcc rejects the code as well (which is wrong).
MSVC accepts the code.</pre>
</div>
</p>
<hr>
<span>You are receiving this mail because:</span>
<ul>
<li>You are on the CC list for the bug.</li>
</ul>
</body>
</html>