brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.0 KiB · 6d9d8c5 Raw
47 lines · cpp
1// RUN: %clang_cc1 -std=c++11 -fblocks -fsyntax-only -verify %s2 3// Tests the use of blocks with variadic templates.4template<typename ...Args>5int f0(Args ...args) {6  return ^ {7    return sizeof...(Args);8  }() + ^ {9    return sizeof...(args);10  }();11}12 13template<typename ...Args>14int f1(Args ...args) {15  return ^ {16    return f0(args...);17  }();18}19 20template int f0(int, float, double);21template int f1(const char*, int, float, double);22 23template<typename ...Args>24int f2(Args ...args) {25  return ^(Args ...block_args) {26    return f1(block_args...);27  }(args + 0 ...);28}29 30template int f2(const char*, int, float, double);31 32template<typename ...Args>33int f3(Args ...args) {34  return ^(Args *...block_args) {35    return f1(block_args...);36  }(&args...);37}38 39template int f3(const char*, int, float, double);40 41template<typename ...Args>42int PR9953(Args ...args) {43  return ^(Args *...block_args) {44    return f1(block_args); // expected-error{{expression contains unexpanded parameter pack 'block_args'}}45  }(&args...);46}47