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

Reply via email to