// RUN: %clang_cc1 -std=c++1z -verify %s
constexpr auto
constexpr auto
constexpr auto
constexpr auto
int k1 = ; // expected-error {{does not contain any unexpanded parameter packs}}
int k2 = ; // expected-error {{does not contain any unexpanded parameter packs}}
int k3 = ; // expected-error {{does not contain any unexpanded parameter packs}}
;
A ;
void // expected-error {{unexpanded parameter packs in both operands}}
// FIXME: it would be reasonable to support this as an extension.
void // expected-error {{expression not permitted as operand}}
void // expected-error {{expression not permitted as operand}}
void // expected-error {{expression not permitted as operand}}
void
void // expected-error {{expression not permitted as operand}}
void // expected-error {{expression not permitted as operand}}
void // expected-error {{expression not permitted as operand}}
void
// Parens are mandatory.
void // expected-error {{expected expression}} expected-error +{{}}
void // expected-error {{expected expression}}
void // expected-error {{expected expression}} expected-error +{{}}
// Must have a fold-operator in the relevant places.
int // expected-error {{operators in fold expression must be the same}}
int // expected-error {{operators in fold expression must be the same}}
int // expected-error +{{}} expected-note {{to match}}
int // expected-error {{expected a foldable binary operator}} expected-error {{expected expression}}
int // expected-error {{expected expression}}
void
// fold-operator can be '>' or '>>'.
constexpr bool
constexpr int
static_assert;
static_assert;
constexpr auto Identity = V;
// Support fold operators within templates.
constexpr int
static_assert;
// A fold-expression is a primary-expression.
constexpr auto
constexpr auto
void