[clang-tools-extra] [clang-tidy][C++20] Add support for Initialization Forwarding in structs and Nested Objects within modernize-use-emplace (PR #131969)
Baranov Victor via cfe-commits
cfe-commits at lists.llvm.org
Sun Jul 13 23:49:07 PDT 2025
================
@@ -1434,3 +1436,33 @@ void testWithPointerTypes() {
// CHECK-MESSAGES: :[[@LINE-1]]:15: warning: unnecessary temporary object created while calling emplace
// CHECK-FIXES: sp->emplace();
}
+
+namespace GH1225740 {
+
+void CXX20testBracedInitTemporaries(){
+
+ std::vector<NonTrivialNoCtor> v1;
+
+ v1.push_back(NonTrivialNoCtor{""});
+ // CHECK-MESSAGES-CPP20: :[[@LINE-1]]:6: warning: use emplace_back instead of push_back
+ // CHECK-FIXES-CPP20: v1.emplace_back("");
+ v1.push_back({""});
+ // CHECK-MESSAGES-CPP20: :[[@LINE-1]]:6: warning: use emplace_back instead of push_back
+ // CHECK-FIXES-CPP20: v1.emplace_back("");
+ v1.push_back(NonTrivialNoCtor{InnerType{""}});
+ // CHECK-MESSAGES-CPP20: :[[@LINE-1]]:6: warning: use emplace_back instead of push_back
+ // CHECK-FIXES-CPP20: v1.emplace_back(InnerType{""});
+ v1.push_back({InnerType{""}});
+ // CHECK-MESSAGES-CPP20: :[[@LINE-1]]:6: warning: use emplace_back instead of push_back
+ // CHECK-FIXES-CPP20: v1.emplace_back(InnerType{""});
+
+ std::vector<NonTrivialWithVector> v2;
+
+ v2.push_back(NonTrivialWithVector{std::vector<int>{0}});
+ // CHECK-MESSAGES-CPP20: :[[@LINE-1]]:6: warning: use emplace_back instead of push_back
+ // CHECK-FIXES-CPP20: v2.emplace_back(std::vector<int>{0});
+ v2.push_back({std::vector<int>{0}});
+ // CHECK-MESSAGES-CPP20: :[[@LINE-1]]:6: warning: use emplace_back instead of push_back
+ // CHECK-FIXES-CPP20: v2.emplace_back(std::vector<int>{0});
+ }
----------------
vbvictor wrote:
```suggestion
}
```
https://github.com/llvm/llvm-project/pull/131969
More information about the cfe-commits
mailing list