40 lines · cpp
1// RUN: %clang_cc1 -verify %s2 3// FIXME: We could in principle support cases like this (particularly, cases4// where the statement-expression contains no labels).5template <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 pack14// expansion of a statement expression is not permitted.15template <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 28template <typename... T> void f3() {29 ({30 int arr[] = {31 [] {32 foo:33 T t; // OK, expanded within compound statement34 goto foo;35 return 0;36 } ...37 };38 });39}40