1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
|
// RUN: %clang_cc1 -fblocks -triple x86_64-apple-darwin -fsyntax-only -verify -Wno-unused %s
// RUN: %clang_cc1 -fblocks -triple x86_64-apple-darwin -fsyntax-only -verify -Wno-unused %s -frecovery-ast -frecovery-ast-type
// RUN: %clang_cc1 -fblocks -triple x86_64-apple-darwin -fsyntax-only -verify -Wno-unused -fexperimental-new-constant-interpreter %s
// RUN: %clang_cc1 -fblocks -triple x86_64-apple-darwin -fsyntax-only -verify -Wno-unused -frecovery-ast -frecovery-ast-type -fexperimental-new-constant-interpreter %s
template <typename ...Ts>
void f() {
((^ { Ts t; }), ...);
((^ (Ts t) {}), ...);
((^ Ts () {}), ...);
^ { Ts t; }; // expected-error {{unexpanded parameter pack 'Ts'}}
^ (Ts t) {}; // expected-error {{unexpanded parameter pack 'Ts'}}
^ Ts () {}; // expected-error {{unexpanded parameter pack 'Ts'}}
}
template <typename ...Ts>
void gh109148() {
(^Ts); // expected-error {{expected expression}}
[] {
(^Ts); // expected-error {{expected expression}}
^Ts; // expected-error {{expected expression}}
^(Ts); // expected-error {{expected expression}}
^ Ts); // expected-error {{expected expression}}
};
([] {
(^Ts); // expected-error {{expected expression}}
^Ts; // expected-error {{expected expression}}
^(Ts); // expected-error {{expected expression}}
^ Ts); // expected-error {{expected expression}}
}, ...); // expected-error {{pack expansion does not contain any unexpanded parameter packs}}
[] { // expected-error {{unexpanded parameter pack 'Ts'}}
^ (Ts) {};
};
[] { // expected-error {{unexpanded parameter pack 'Ts'}}
^ { Ts x; };
};
[] { // expected-error {{unexpanded parameter pack 'Ts'}}
Ts s;
(^Ts); // expected-error {{expected expression}}
};
([] {
Ts s;
(^Ts); // expected-error {{expected expression}}
}, ...);
[] { // expected-error {{unexpanded parameter pack 'Ts'}}
^ { Ts s; return not_defined; }; // expected-error {{use of undeclared identifier 'not_defined'}}
};
}
void g() {
f<>();
f<int>();
f<long, float>();
gh109148<>();
gh109148<int>();
gh109148<long, float>();
}
|