// PR c++/96229 // { dg-do compile { target c++20 } } template <class T> concept Int = requires { T{0}; }; template <template <Int> class P> struct X { }; template <Int> struct Y : X<Y> { }; struct Z { }; struct W { int i; }; Y<Z> z; // { dg-error "constraint" } Y<W> w;