brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.4 KiB · 9c4c119 Raw
63 lines · plain
1// RUN: %clang_cc1 -pedantic-errors -fblocks -std=c++1y -emit-pch %s -o %t-cxx1y2// RUN: %clang_cc1 -ast-print -pedantic-errors -fblocks -std=c++1y -include-pch %t-cxx1y  %s | FileCheck -check-prefix=CHECK-PRINT %s3 4#ifndef HEADER_INCLUDED5 6#define HEADER_INCLUDED7template<typename T>8T add_slowly(const T& x, const T &y) {9  return [](auto z, int y = 0) { return z + y; }(5);10};11 12inline int add_int_slowly_twice(int x, int y) {13  int i = add_slowly(x, y);14  auto lambda = [](auto z) { return z + z; };15  return i + lambda(y);16}17 18inline int sum_array(int n) {19  auto lambda = [](auto N) -> int {20    int sum = 0;21    int array[5] = { 1, 2, 3, 4, 5};22  23    for (unsigned I = 0; I < N; ++I)24      sum += array[N];25    return sum;26  };27 28  return lambda(n);29}30 31inline int to_block_pointer(int n) {32  auto lambda = [=](int m) { return n + m; };33  int (^block)(int) = lambda;34  return block(17);35}36 37template<typename T>38int init_capture(T t) {39  return [&, x(t)] { return sizeof(x); };40}41 42auto with_pack = [](auto ...xs){};43 44#else45 46// CHECK-PRINT: T add_slowly47// CHECK-PRINT: return []48template float add_slowly(const float&, const float&);49 50int add(int x, int y) {51  return add_int_slowly_twice(x, y) + sum_array(4) + to_block_pointer(5);52}53 54// CHECK-PRINT: inline int add_int_slowly_twice 55// CHECK-PRINT: lambda = [](auto z56 57// CHECK-PRINT: init_capture58// CHECK-PRINT: [&, x(t)]59 60void use_with_pack() { with_pack(1, 2, 3); }61 62#endif63