This can be used as string(“bob”) + toStr(5) without declaring the type, presuming that the type can correctly be inferred by the compiler. Obviously, T must support operator<<.
template <class T>
static inline std::string toStr(T v)
{
std::stringstream s;
s << v;
return s.str();
}