Является ли следующее безопасным как есть, без явного перевода или вызова конструктора std::string? Если не безопасно, почему бы и нет?
std:string myfunc()
{
char buf[128] = "";
// put something into buf or not base on logic.
return buf;
}