在下面的代码中,callee 中的 string_view 值是每个设计的。但是返回给调用者之后,就报错了。这两个地址是不同的,所以似乎 return elision 不起作用。如果没有,我希望至少 string_view copy c'tor 应该可以工作,但也不能。
static string_view my_to_string_view(uint32_t value)
{
std::array<char, 10> str;
if (auto [ptr, ec] = std::to_chars(str.data(), str.data() + str.size(), value); ec == std::errc())
{
cout << "data:" << str.data() << "\n";
cout << "length is:" << ptr - str.data()<<"\n";
auto ret = std::string_view(str.data(), ptr - str.data()); // C++17, uses string_view(ptr, length);
cout << "return value in func:" << ret << "\n";
return ret;
}
throw std::exception();
}
int main()
{
std::string_view s = my_to_string_view(125);
std::cout << "return value in main is:"<< s <<"\n";
}
data:125%%?
length is:3
return value in func:125
return value in main is:
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
49 次 |
| 最近记录: |