// { dg-do compile { target c++20 } } template concept same_as = __is_same(T, U); // this constrained placeholder type should get resolved at parse time template same_as auto x = true; template same_as auto y = V; // { dg-error "constraint" } template struct A { template static inline same_as auto z = V; // { dg-error "constraint" } }; int main() { x; // { dg-bogus "" } y<0>; // { dg-bogus "" } y<'0'>; // { dg-message "required from here" } A::z<0>; // { dg-bogus "" } A::z<'0'>; // { dg-message "required from here" } } // unsatisfied placeholder type constraint diagnosed at parse time template same_as auto w = true; // { dg-error "constraint" }