mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2024-11-24 06:10:12 +00:00
40 lines
912 B
C++
40 lines
912 B
C++
|
// RUN: %clang_cc1 -verify %s
|
||
|
|
||
|
// FIXME: We could in principle support cases like this (particularly, cases
|
||
|
// where the statement-expression contains no labels).
|
||
|
template <typename... T> void f1() {
|
||
|
int arr[] = {
|
||
|
({
|
||
|
T(); // expected-error {{unexpanded parameter pack}}
|
||
|
}) ... // expected-error {{does not contain any unexpanded parameter packs}}
|
||
|
};
|
||
|
}
|
||
|
|
||
|
// FIXME: The error for this isn't ideal; it'd be preferable to say that pack
|
||
|
// expansion of a statement expression is not permitted.
|
||
|
template <typename... T> void f2() {
|
||
|
[] {
|
||
|
int arr[] = {
|
||
|
T() + ({
|
||
|
foo:
|
||
|
T t; // expected-error {{unexpanded parameter pack}}
|
||
|
goto foo;
|
||
|
0;
|
||
|
}) ...
|
||
|
};
|
||
|
};
|
||
|
}
|
||
|
|
||
|
template <typename... T> void f3() {
|
||
|
({
|
||
|
int arr[] = {
|
||
|
[] {
|
||
|
foo:
|
||
|
T t; // OK, expanded within compound statement
|
||
|
goto foo;
|
||
|
return 0;
|
||
|
} ...
|
||
|
};
|
||
|
});
|
||
|
}
|