// RUN: %clang_cc1 -std=c++11 -fblocks -fsyntax-only -verify %s // Tests the use of blocks with variadic templates. template<typename ...Args> int f0(Args ...args) { return ^ { return sizeof...(Args); }() + ^ { return sizeof...(args); }(); } template<typename ...Args> int f1(Args ...args) { return ^ { return f0(args...); }(); } template int f0(int, float, double); template int f1(const char*, int, float, double); template<typename ...Args> int f2(Args ...args) { return ^(Args ...block_args) { return f1(block_args...); }(args + 0 ...); } template int f2(const char*, int, float, double); template<typename ...Args> int f3(Args ...args) { return ^(Args *...block_args) { return f1(block_args...); }(&args...); } template int f3(const char*, int, float, double); template<typename ...Args> int PR9953(Args ...args) { return ^(Args *...block_args) { return f1(block_args); // expected-error{{expression contains unexpanded parameter pack 'block_args'}} }(&args...); }