<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 - [concepts] __is_convertible_to, requires-clause, and variable template interact poorly"
href="https://bugs.llvm.org/show_bug.cgi?id=44656">44656</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>[concepts] __is_convertible_to, requires-clause, and variable template interact poorly
</td>
</tr>
<tr>
<th>Product</th>
<td>clang
</td>
</tr>
<tr>
<th>Version</th>
<td>10.0
</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>Casey@Carter.net
</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>Created <span class=""><a href="attachment.cgi?id=23062" name="attach_23062" title="Repro">attachment 23062</a> <a href="attachment.cgi?id=23062&action=edit" title="Repro">[details]</a></span>
Repro
Compiling this well-formed TU:
template <class, class> inline constexpr bool is_same_v = false;
template <class T> inline constexpr bool is_same_v<T, T> = true;
template <class T, class U>
concept same_as = is_same_v<T, U>;
struct invalid;
template <class T, class U = invalid>
struct ConvertsFrom {
ConvertsFrom(T);
#ifndef WORKAROUND
ConvertsFrom(U) requires(!is_same_v<U, invalid>);
#else
ConvertsFrom(U) requires(!same_as<U, invalid>);
#endif
};
static_assert(__is_convertible_to(int, ConvertsFrom<int>));
with "clang -std=c++2a" diagnoses:
repro.cpp:19:1: error: static_assert failed due to requirement
'__is_convertible_to(int, ConvertsFrom<int, invalid>)'
static_assert(__is_convertible_to(int, ConvertsFrom<int>));
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
with "-DWORKAROUND", the TU compiles correctly.</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>