| // RUN: %clang_cc1 -fsyntax-only -verify -std=c++20 -fopenmp %s |
| |
| // Okay, not an OpenMP capture. |
| auto f() { |
| int i[2] = {}; |
| auto [a, b] = i; |
| return [=, &a] { |
| return a + b; |
| }; |
| } |
| |
| // Okay, not an OpenMP capture. |
| void foo(int); |
| void g() { |
| #pragma omp parallel |
| { |
| int i[2] = {}; |
| auto [a, b] = i; |
| auto L = [&] { foo(a+b); }; |
| } |
| } |
| |
| // FIXME: OpenMP should support capturing structured bindings |
| void h() { |
| int i[2] = {}; |
| auto [a, b] = i; // expected-note 2{{declared here}} |
| #pragma omp parallel |
| { |
| // expected-error@+1 2{{capturing a structured binding is not yet supported in OpenMP}} |
| foo(a + b); |
| } |
| } |