临时对象的生命周期:嵌套函数调用中指向临时向量的迭代器

Lifetime of temporary object: iterator to temporary vector in nested function call

本文关键字:向量 迭代器 函数调用 周期 生命 嵌套 临时对象      更新时间:2023-10-16

让我们假设我有这样的类:

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)) {}
};

和I有这样签名的函数:

void f(const string_view& str);

是否为有效代码

QString str;
f(string_view(&*str.toLocal8Bit().begin()));

?

我的意思是临时的std::vector何时会被销毁?

在完整语句结束时销毁临时变量。这是安全的