// RUN: %clang_cc1 -std=c++14 -fconcepts-ts -x c++ %s -verify // expected-no-diagnostics // Test parsing of the optional requires-clause in a template-declaration. template requires true void foo() { } template requires !0 struct A { void foo(); struct AA; enum E : int; static int x; template requires true void Mfoo(); template requires true struct M; template requires true static int Mx; template requires true using MQ = M; }; template requires !0 void A::foo() { } template requires !0 struct A::AA { }; template requires !0 enum A::E : int { E0 }; template requires !0 int A::x = 0; template requires !0 template requires true void A::Mfoo() { } template requires !0 template requires true struct A::M { }; template requires !0 template requires true int A::Mx = 0; template requires true int x = 0; template requires true using Q = A; struct C { template requires true void Mfoo(); template requires true struct M; template requires true static int Mx; template requires true using MQ = M; }; template requires true void C::Mfoo() { } template requires true struct C::M { }; template requires true int C::Mx = 0;