// RUN: %clang_cc1 -std=c++2a -frelaxed-template-template-args -verify %s template concept C = T::f(); // expected-note@-1{{similar constraint}} template concept D = C && T::g(); template concept F = T::f(); // expected-note@-1{{similar constraint expressions not considered equivalent}} template class P> struct S1 { }; // expected-note 2{{'P' declared here}} template struct X { }; template struct Y { }; // expected-note{{'Y' declared here}} template struct Z { }; template struct W { }; // expected-note{{'W' declared here}} S1 s11; S1 s12; // expected-error{{template template argument 'Y' is more constrained than template template parameter 'P'}} S1 s13; S1 s14; // expected-error{{template template argument 'W' is more constrained than template template parameter 'P'}} template class P> struct S2 { }; S2 s21; S2 s22; S2 s23; template