// RUN: %clang_cc1 -fsyntax-only -verify=expected,cpp14 -std=gnu++14 %s // RUN: %clang_cc1 -fsyntax-only -verify=expected,cpp14 -std=gnu++14 %s -fdelayed-template-parsing -DDELAYED_TEMPLATE_PARSING // RUN: %clang_cc1 -fsyntax-only -verify=expected,cpp17 -std=gnu++1z %s // Errors export class foo { }; // expected-error {{expected template}} template x; // expected-error {{a type specifier is required for all declarations}} \ // expected-error {{does not refer}} export template x; // expected-error {{expected '<' after 'template'}} export template class x0; // expected-warning {{exported templates are unsupported}} template < ; // expected-error {{expected template parameter}} \ // expected-error{{expected ',' or '>' in template-parameter-list}} \ // expected-error {{declaration does not declare anything}} template struct x1; // expected-error {{expected ',' or '>' in template-parameter-list}} // verifies that we only walk to the ',' & still produce errors on the rest of the template parameters template struct x2; // expected-error {{expected ',' or '>' in template-parameter-list}} \ expected-error {{expected unqualified-id}} template> struct x3; // expected-error {{expected ',' or '>' in template-parameter-list}} \ cpp14-error {{template template parameter requires 'class' after the parameter list}} \ cpp17-error {{template template parameter requires 'class' or 'typename' after the parameter list}} template