mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-26 20:26:06 +00:00

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
14 lines
437 B
C++
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}}
|
|
};
|
|
}
|