llvm-project/clang/test/SemaCXX/decomposition-openmp.cpp
Corentin Jabot 127bf44385 [Clang][C++20] Support capturing structured bindings in lambdas
This completes the implementation of P1091R3 and P1381R1.

This patch allow the capture of structured bindings
both for C++20+ and C++17, with extension/compat warning.

In addition, capturing an anonymous union member,
a bitfield, or a structured binding thereof now has a
better diagnostic.

We only support structured bindings - as opposed to other kinds
of structured statements/blocks. We still emit an error for those.

In addition, support for structured bindings capture is entirely disabled in
OpenMP mode as this needs more investigation - a specific diagnostic indicate the feature is not yet supported there.

Note that the rest of P1091R3 (static/thread_local structured bindings) was already implemented.

at the request of @shafik, i can confirm the correct behavior of lldb wit this change.

Fixes https://github.com/llvm/llvm-project/issues/54300
Fixes https://github.com/llvm/llvm-project/issues/54300
Fixes https://github.com/llvm/llvm-project/issues/52720

Reviewed By: aaron.ballman

Differential Revision: https://reviews.llvm.org/D122768
2022-08-04 10:12:53 +02:00

14 lines
437 B
C++

// RUN: %clang_cc1 -fsyntax-only -verify -std=c++20 -fopenmp %s
// FIXME: OpenMP should support capturing structured bindings
auto f() {
int i[2] = {};
auto [a, b] = i; // expected-note 2{{declared here}}
return [=, &a] {
// expected-error@-1 {{capturing a structured binding is not yet supported in OpenMP}}
return a + b;
// expected-error@-1 {{capturing a structured binding is not yet supported in OpenMP}}
};
}