// RUN: %check_clang_tidy %s readability-redundant-string-init %t namespace std { template class allocator {}; template class char_traits {}; template , typename A = std::allocator> struct basic_string { basic_string(); basic_string(const basic_string&); // MSVC headers define two constructors instead of using optional arguments. basic_string(const C *); basic_string(const C *, const A &); ~basic_string(); }; typedef basic_string string; typedef basic_string wstring; } void f() { std::string a = ""; // CHECK-MESSAGES: [[@LINE-1]]:15: warning: redundant string initialization [readability-redundant-string-init] // CHECK-FIXES: std::string a; std::string b(""); // CHECK-MESSAGES: [[@LINE-1]]:15: warning: redundant string initialization // CHECK-FIXES: std::string b; std::string c = R"()"; // CHECK-MESSAGES: [[@LINE-1]]:15: warning: redundant string initialization // CHECK-FIXES: std::string c; std::string d(R"()"); // CHECK-MESSAGES: [[@LINE-1]]:15: warning: redundant string initialization // CHECK-FIXES: std::string d; std::string u = "u"; std::string w("w"); std::string x = R"(x)"; std::string y(R"(y)"); std::string z; } void g() { std::wstring a = L""; // CHECK-MESSAGES: [[@LINE-1]]:16: warning: redundant string initialization // CHECK-FIXES: std::wstring a; std::wstring b(L""); // CHECK-MESSAGES: [[@LINE-1]]:16: warning: redundant string initialization // CHECK-FIXES: std::wstring b; std::wstring c = LR"()"; // CHECK-MESSAGES: [[@LINE-1]]:16: warning: redundant string initialization // CHECK-FIXES: std::wstring c; std::wstring d(LR"()"); // CHECK-MESSAGES: [[@LINE-1]]:16: warning: redundant string initialization // CHECK-FIXES: std::wstring d; std::wstring u = L"u"; std::wstring w(L"w"); std::wstring x = LR"(x)"; std::wstring y(LR"(y)"); std::wstring z; }