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). 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. 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 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