<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/56154>56154</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Concepts 'more constrained' not detected for member functions
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang:frontend,
rejects-valid,
concepts
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
royjacobson
</td>
</tr>
</table>
<pre>
https://godbolt.org/z/bvKGhY4Yz
```c++
template <int N> concept C0 = (N == 0);
template <int N, int N2> concept C0x = C0<N>;
template <int N1, int N2> concept C00 = C0x<N1, N2> && C0<N2>;
template<int N1, int N2>
struct A {
void f() requires C00<N1, N2>;
void f() requires C0x<N1, N2>;
};
template<int N1, int N2>
void f() requires C00<N1, N2>;
template<int N1, int N2>
void f() requires C0x<N1, N2>;
int main() {
f<0, 0>(); // Works
A<0, 0> a;
a.f(); // Works in GCC only.
}
```
This should compile, I think, but it doesn't. For some reason MSVC also say that `a.f()` is ambiguous.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJylVE2PmzAQ_TXmMlrkmJCPA4eUdFdV1b20arVH25jgXYNT20TJ_vqOCduEqqnUNnJgPMx7b2YYLGx1KpoQ9p5kG8Luce1sJawJqXU73L3iXxw-PjRP86dXQreEbsbrgp6XJOxdXIM3qHZveFBAslJ3AR5J9h6k7aTaBygpurdA2OoxGtGmhK1JdhPMShgMNqU5DjwlxbgocJtgdouBjgzHSDFEnSMIW-Aaqdk191Th9wLnGB9cLwNsgCxHLODvYHUFNdaOFYNT33vtlI-ZTDP4qfcnzPEGhiy3_5Dv32b2_8w38x-ukaTluhtxky7WiKQRSCNuCEA0nCcXvln34q-pImRzDQE-aTBP6wvJhAVLgYeyBNuZU3rp7nT0r6W-NNqDb2xvKpyzdq-NiqIfIDS6e4mm6APoAJVVHmtbhhTurQNvW4W94d528Onz1xK48RY8PyGQB0CVS5ILCijCW6F3ve19mlRFVq2zNU-CDkYV5Xm-PVaybK1TceBxGrGXqkIXdBblVVAyKHwvKN6qVigHdd_JoDE26Z359TjQoelFiiXhxpjD2-1u7-wzMuFWe98rj0a-mOXzpClmVNIZy5Yyo7nMqkqKOVUsY3NJ60quWGK4UMYXJMeTg0nDux3q1c52QXWYKYvtwptTUcHfHbjRV-7xM_bRk28TXTDKGF2wGWNslecp5wuRixWtUayick1QHQfKpDHveK4lrhhKEP3O40OjffCXh9x7veuUGtJDft6HxrrC2dMzl1bgi0qGiouh3B-hDHx2">