临时对象的生命周期:嵌套函数调用中临时向量的迭代器
Lifetime of temporary object: iterator to temporary vector in nested function call
假设我有这样的 类:
struct QString {
//return null terminated array
std::vector<char> toLocal8Bit() const;
};
struct string_view {
const char *data;
size_t len;
string_view(const char *str): data(str), len(std::strlen(str)) {}
};
我有这样签名的功能:
void f(const string_view& str);
是否有效代码
QString str;
f(string_view(&*str.toLocal8Bit().begin()));
?
我的意思是临时 std::vector 什么时候会被销毁?
临时文件在完整语句结束时被销毁。所以这是安全的。
假设我有这样的 类:
struct QString {
//return null terminated array
std::vector<char> toLocal8Bit() const;
};
struct string_view {
const char *data;
size_t len;
string_view(const char *str): data(str), len(std::strlen(str)) {}
};
我有这样签名的功能:
void f(const string_view& str);
是否有效代码
QString str;
f(string_view(&*str.toLocal8Bit().begin()));
?
我的意思是临时 std::vector 什么时候会被销毁?
临时文件在完整语句结束时被销毁。所以这是安全的。