Issue |
145787
|
Summary |
[clang-tidy] Check request: bugprone-invalidated-std-erase
|
Labels |
clang-tidy
|
Assignees |
|
Reporter |
denzor200
|
Needs a check that will find dangerous usages of `std::erase`.
```
void example() {
std::vector<int> values{1, 1, 2, 3, 1, 4};
std::erase(values, values.front()); // WARNING
}
```
Correct way to write the same logic is to make a copy before erase:
```
void example() {
std::vector<int> values{1, 1, 2, 3, 1, 4};
const auto copy = values.front();
std::erase(values, copy); // OK
}
```
BTW, is it possible to provide such fixit hint? I never seen a Clang Tidy's fixit that provides such transformation.
In C++23 mode this check will definitely provide fixit:
```
void example() {
std::vector<int> values{1, 1, 2, 3, 1, 4};
std::erase(values, auto{values.front()}); // OK
}
```
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs