template<typename T> inline static T strConv(const std::string& str); template<> inline const std::string& strConv(const std::string& str) { return str; } template<> inline long strConv(const std::string&) { return 0; } inline static const std::string& f(const std::string& attr) { return strConv<const std::string&>(attr); } It says that the call to strConv inside f is returnTempReference. This only happens when you have the specialization for long (which is NOT called inside f!)
Absolutely valid C++ code: $ cat xxx.cpp struct S { void f(); }; S* g(); void h() { const auto& s = g(); if (s != nullptr) s->f(); } all cppcheck messages are bogus: $ cppcheck/2.8.0/bin/cppcheck xxx.cpp Checking xxx.cpp ... xxx.cpp:11:7: error: Using reference to dangling temporary. [danglingTempReference] if (s != nullptr) ^ xxx.cpp:10:17: note: Assigned to reference. const auto& s = g(); ^ xxx.cpp:11:7: note: Using reference to dangling temporary. if (s != nullptr) ^ xxx.cpp:12:5: error: Using...
Works for me too, thanks! interesting, looks like just uninitStructMember doesn't work (which would be probably more logical here)
https://docs.mrpt.org/reference/dev-PF-refactor/xml_parser_8cpp_source.html#l03313 Tried all, nothing works, still showing the error on the return c: Cppcheck: (error) uninitvar: Uninitialized variables: c.attrib, c.text, c.clear: // cppcheck-suppress[uninitvar] XMLNodeContents XMLNode::enumContents(int i) const { // cppcheck-suppress[uninitvar] /*cppcheck-suppress[uninitvar]*/ XMLNodeContents c; // cppcheck-suppress[uninitvar] if (!d) { // cppcheck-suppress[uninitvar] c.etype = eNodeNULL; // cppcheck-suppress[uninitvar]...
https://docs.mrpt.org/reference/dev-PF-refactor/xml_parser_8cpp_source.html#l03313 Tried all, nothing works, still showing the error on the return c: Cppcheck: (error) uninitvar: Uninitialized variables: c.attrib, c.text, c.clear: ``` // cppcheck-suppress[uninitvar] XMLNodeContents XMLNode::enumContents(int i) const { // cppcheck-suppress[uninitvar] /cppcheck-suppress[uninitvar]/ XMLNodeContents c; // cppcheck-suppress[uninitvar] if (!d) { // cppcheck-suppress[uninitvar] c.etype = eNodeNULL; // cppcheck-suppress[uninitvar]...
https://docs.mrpt.org/reference/dev-PF-refactor/xml_parser_8cpp_source.html#l03313 Tried all, nothing works, still showing the error on the return c: Cppcheck: (error) uninitvar: Uninitialized variables: c.attrib, c.text, c.clear: ` // cppcheck-suppress[uninitvar] XMLNodeContents XMLNode::enumContents(int i) const { // cppcheck-suppress[uninitvar] /cppcheck-suppress[uninitvar]/ XMLNodeContents c; // cppcheck-suppress[uninitvar] if (!d) { // cppcheck-suppress[uninitvar] c.etype = eNodeNULL; // cppcheck-suppress[uninitvar]...