// PR c++/67152 // { dg-do compile { target c++20 } } template concept HasType = requires { typename T::type; }; template struct trait { using type = void; }; struct has_type { using type = void; }; // Instantiation here trait::type foo() {} // constrained version here. Type "has_type" would fail this // constraint so this partial specialization would not have been // selected. template requires (!HasType) struct trait { using type = void; };