// RUN: %clang_cc1 -std=c++14 -fconcepts-ts -x c++ -verify %s namespace nodiag { template requires bool(T()) struct A; template requires bool(U()) struct A; } // end namespace nodiag namespace diag { template requires true // expected-note{{previous template declaration is here}} struct A; template struct A; // expected-error{{associated constraints differ in template redeclaration}} template struct B; // expected-note{{previous template declaration is here}} template requires true // expected-error{{associated constraints differ in template redeclaration}} struct B; template requires true // expected-note{{previous template declaration is here}} struct C; template requires !0 // expected-error{{associated constraints differ in template redeclaration}} struct C; } // end namespace diag namespace nodiag { struct AA { template requires someFunc(T()) struct A; }; template requires someFunc(T()) struct AA::A { }; struct AAF { template requires someFunc(T()) friend struct AA::A; }; } // end namespace nodiag namespace diag { template struct TA { template