[clang-tools-extra] [clang-tidy] Add new check `modernize-use-structured-binding` (PR #158462)
Baranov Victor via cfe-commits
cfe-commits at lists.llvm.org
Thu Oct 2 04:41:53 PDT 2025
================
@@ -0,0 +1,622 @@
+// RUN: %check_clang_tidy -check-suffix=ALL,CPP20ORLATER -std=c++20-or-later %s modernize-use-structured-binding %t -- -- -I %S/Inputs/use-structured-binding/
+// RUN: %check_clang_tidy -check-suffix=ALL -std=c++17 %s modernize-use-structured-binding %t -- -- -I %S/Inputs/use-structured-binding/
+#include "fake_std_pair_tuple.h"
+
+template<typename T>
+void MarkUsed(T x);
+
+struct TestClass {
+ int a;
+ int b;
+ TestClass() : a(0), b(0) {}
+ TestClass& operator++();
+ TestClass(int x, int y) : a(x), b(y) {}
+};
+
----------------
vbvictor wrote:
Could we add a test when we decompose pair with `operator*()`, e.g.:
```cpp
std::unordered_map::iterator it;
auto [key, value] = *it;
```
Good to also check iteration over containers (with involving iterators):
```cpp
for (auto [k, v] : my_map);
```
It's a popular pattern IMO.
https://github.com/llvm/llvm-project/pull/158462
More information about the cfe-commits
mailing list