See: https://github.com/gazebosim/gz-msgs/commit/22c57006798470db63e8ecaff7b49dce34d5e76f Index: gz-msgs-ignition-msgs5_5.11.1/src/Generator.cc =================================================================== --- gz-msgs-ignition-msgs5_5.11.1.orig/src/Generator.cc +++ gz-msgs-ignition-msgs5_5.11.1/src/Generator.cc @@ -71,12 +71,12 @@ bool Generator::Generate(const FileDescr OutputDirectory *_generatorContext, std::string * /*_error*/) const { - std::string headerFilename = _file->name(); + std::string headerFilename(_file->name()); std::string delim = ".proto"; size_t pos = headerFilename.rfind(delim); headerFilename.replace(pos, delim.size(), ".pb.h"); - std::string sourceFilename = _file->name(); + std::string sourceFilename( _file->name()); pos = sourceFilename.rfind(delim); sourceFilename.replace(pos, delim.size(), ".pb.cc"); @@ -142,10 +142,11 @@ bool Generator::Generate(const FileDescr printer.Print("#endif\n", "name", "includes"); // Call the IGN_REGISTER_STATIC_MSG macro - std::string factory = "IGN_REGISTER_STATIC_MSG(\"ign_msgs."; - factory += _file->message_type(0)->name() + "\", " + - _file->message_type(0)->name() +")"; - printer.Print(factory.c_str(), "name", "includes"); + std::stringstream factory; + factory << "IGN_REGISTER_STATIC_MSG(\"ign_msgs."; + factory << _file->message_type(0)->name() << "\", " << + _file->message_type(0)->name() << ")"; + printer.Print(factory.str(), "name", "includes"); } // Inject code in the auto-generated header files immediately before closing @@ -156,26 +157,27 @@ bool Generator::Generate(const FileDescr io::Printer printer(output.get(), '$'); // Define std::unique_ptr types for our messages - std::string ptrTypes = "typedef std::unique_ptr<" - + _file->message_type(0)->name() + "> " - + _file->message_type(0)->name() + "UniquePtr;\n"; + std::stringstream ptrTypes; + ptrTypes << "typedef std::unique_ptr<" + << _file->message_type(0)->name() << "> " + << _file->message_type(0)->name() << "UniquePtr;\n"; // Define const std::unique_ptr types for our messages - ptrTypes += "typedef std::unique_ptrmessage_type(0)->name() + "> Const" - + _file->message_type(0)->name() + "UniquePtr;\n"; + ptrTypes << "typedef std::unique_ptrmessage_type(0)->name() << "> Const" + << _file->message_type(0)->name() << "UniquePtr;\n"; // Define std::shared_ptr types for our messages - ptrTypes += "typedef std::shared_ptr<" - + _file->message_type(0)->name() + "> " - + _file->message_type(0)->name() + "SharedPtr;\n"; + ptrTypes << "typedef std::shared_ptr<" + << _file->message_type(0)->name() << "> " + << _file->message_type(0)->name() << "SharedPtr;\n"; // Define const std::shared_ptr types for our messages - ptrTypes += "typedef std::shared_ptrmessage_type(0)->name() + "> Const" - + _file->message_type(0)->name() + "SharedPtr;\n"; + ptrTypes << "typedef std::shared_ptrmessage_type(0)->name() << "> Const" + << _file->message_type(0)->name() << "SharedPtr;\n"; - printer.Print(ptrTypes.c_str(), "name", "namespace_scope"); + printer.Print(ptrTypes.str(), "name", "namespace_scope"); } // Pop the warning suppression stack for MSVC