// DR 2369 // { dg-do compile { target c++20 } } template struct Z { typedef typename T::x xx; }; template concept C = requires { typename T::A; }; template typename Z::xx f(void *, T); // #1 template void f(int, T); // #2 struct A {} a; struct ZZ { template ::xx> operator T *(); operator int(); }; int main() { ZZ zz; f(1, a); // OK, deduction fails for #1 because there is no conversion from int to void* f(zz, 42); // OK, deduction fails for #1 because C is not satisfied }