diff --git a/BaseLib/StringTools.cpp b/BaseLib/StringTools.cpp
index 43a0a06c2dfebeb61663e4266dba60ae889ac314..7a658c8b15527b0285cf47d90e1e9e8508d07697 100644
--- a/BaseLib/StringTools.cpp
+++ b/BaseLib/StringTools.cpp
@@ -72,6 +72,11 @@ std::string padLeft(std::string const& str, int maxlen, char ch)
 	return ss.str();
 }
 
+std::string const& tostring(std::string const& value)
+{
+	return value;
+}
+
 } // end namespace BaseLib
 
 #ifdef MSVC
diff --git a/BaseLib/StringTools.h b/BaseLib/StringTools.h
index f339f4e30b9c25684129f6eee0f0a47a0a176ef8..413fa5168e6e935b157997aa8ed9c22a4d066b6c 100644
--- a/BaseLib/StringTools.h
+++ b/BaseLib/StringTools.h
@@ -70,6 +70,15 @@ void simplify(std::string &str);
  */
 std::string padLeft(std::string const& str, int maxlen, char ch=' ');
 
+
+//! Method for handling conversion to string uniformly across all types and std::string; see std::string overload below.
+template<typename T> std::string tostring(T const& value)
+{
+	return std::to_string(value);
+}
+//! \overload
+std::string const& tostring(std::string const& value);
+
 } // end namespace BaseLib
 
 #ifdef MSVC