1 // RUN: %clang_cc1 -std=c++2a -verify %s 2 3 namespace p3 { 4 void bar(...); 5 template <typename... Args> void foo(Args... args) { 6 (void)[... xs = args] { 7 bar(xs...); 8 }; 9 } 10 11 void use() { 12 foo(); 13 foo(1); 14 } 15 } 16 17 template<typename ...T> void f(T ...t) { 18 (void)[&...x = t] { 19 x; // expected-error {{unexpanded parameter pack 'x'}} 20 }; 21 22 // Not OK: can't expand 'x' outside its scope. 23 weird((void)[&...x = t] { 24 return &x; // expected-error {{unexpanded parameter pack 'x'}} 25 }... // expected-error {{does not contain any unexpanded}} 26 ); 27 28 // OK, capture only one 'slice' of 'x'. 29 weird((void)[&x = t] { 30 return &x; 31 }... 32 ); 33 34 // 'x' is not expanded by the outer '...', but 'T' is. 35 weird((void)[&... x = t] { 36 return T() + &x; // expected-error {{unexpanded parameter pack 'x'}} 37 }... // expected-error {{does not contain any unexpanded}} 38 ); 39 } 40