[clang] [Clang] Implement C++26 Attributes for Structured Bindings (P0609R3) (PR #89906)

via cfe-commits cfe-commits at lists.llvm.org
Thu Apr 25 07:32:53 PDT 2024


================
@@ -102,11 +102,21 @@ namespace PR33839 {
     for (auto [x] : a) { // expected-warning {{unused variable '[x]'}}
     }
   }
-  void use() { 
+  void use() {
     f<int>(); // expected-note {{instantiation of}}
     g<true>();
     g<false>();
     h<int>(); // expected-note {{instantiation of}}
   }
 }
+
+namespace maybe_unused_binding {
+
+void test() {
+  struct X { int a, b; } x;
+  auto [a [[maybe_unused]], b] = x; // expected-warning {{an attribute specifier sequence attached to a structured binding declaration is a C++2c extension}}
----------------
cor3ntin wrote:

This is that test.
By marking one of the member unused, we don't warn on any of the member.
This perhaps not perfect but the standard already specified that if one of the member is used, we should not warn on any of the biding

https://github.com/llvm/llvm-project/pull/89906


More information about the cfe-commits mailing list