// RUN: %check_clang_tidy %s cppcoreguidelines-pro-type-member-init,hicpp-member-init,modernize-use-emplace,hicpp-use-emplace %t namespace std { template class vector { public: void push_back(const T &) {} void push_back(T &&) {} template void emplace_back(Args &&... args){}; }; } // namespace std class Foo { public: Foo() : _num1(0) // CHECK-MESSAGES: warning: constructor does not initialize these fields: _num2 [cppcoreguidelines-pro-type-member-init,hicpp-member-init] { _num1 = 10; } int use_the_members() const { return _num1 + _num2; } private: int _num1; int _num2; // CHECK-FIXES: _num2{}; }; int should_use_emplace(std::vector &v) { v.push_back(Foo()); // CHECK-FIXES: v.emplace_back(); // CHECK-MESSAGES: warning: use emplace_back instead of push_back [hicpp-use-emplace,modernize-use-emplace] }