1 // RUN: %clang_cc1 -verify %s
2 
3 // FIXME: We could in principle support cases like this (particularly, cases
4 // where the statement-expression contains no labels).
f1()5 template <typename... T> void f1() {
6   int arr[] = {
7     ({
8       T(); // expected-error {{unexpanded parameter pack}}
9     }) ... // expected-error {{does not contain any unexpanded parameter packs}}
10   };
11 }
12 
13 // FIXME: The error for this isn't ideal; it'd be preferable to say that pack
14 // expansion of a statement expression is not permitted.
f2()15 template <typename... T> void f2() {
16   [] {
17     int arr[] = {
18       T() + ({
19       foo:
20         T t; // expected-error {{unexpanded parameter pack}}
21         goto foo;
22         0;
23       }) ...
24     };
25   };
26 }
27 
f3()28 template <typename... T> void f3() {
29   ({
30     int arr[] = {
31       [] {
32       foo:
33         T t; // OK, expanded within compound statement
34         goto foo;
35         return 0;
36       } ...
37     };
38   });
39 }
40