std::string &func(int vlu)
{
std::string str;
str = std::to_string(vlu) + "something";
return str;
}
上面的函数显然是不安全的。
以下是另一个版本。
std::string &func(int vlu)
{
return std::to_string(vlu) + "something";
}
我有一些问题:
编译器(gcc)在第二个版本中没有给我任何警告。这样安全吗?
我认为编译器(或其他什么东西?)将创建一个临时变量来保存表达式std::to_string(vlu) + "something"
的返回值。所以第二个版本也不安全。我是对的吗?
prog.cc:5:12: error: non-const lvalue reference to type 'basic_string<...>' cannot bind to a temporary of type 'basic_string<...>' return std::to_string(vlu) + "something"; ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1 error generated.
- hellow