Issue |
68886
|
Summary |
[clang-tidy] modernize-use-emplace suggests C++20 code under C++17
|
Labels |
clang-tidy
|
Assignees |
|
Reporter |
maflcko
|
Assuming a C++ file with:
```cpp
#include <vector>
struct Marker {
Marker();
};
struct Number {
int num;
Marker dummy;
};
int main() {
std::vector<Number> vec;
vec.emplace_back(Number{.num = 2});
// vec.emplace_back(2); // C++20
}
```
Clang Tidy will print:
```
[<source>:14:22: warning: unnecessary temporary object created while calling emplace_back [modernize-use-emplace]]
14 | vec.emplace_back(Number{.num = 2});
| ^~~~~~~~~~~~~~~~
1 warning generated.
```
This is wrong, when using C++17, because fixing the warning requires C++20.
Godbolt: https://godbolt.org/z/xn1Y3xMYo
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs