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

时间:2015-10-21 15:17:49

标签: c++ iterator lifetime function-call temporary-objects

我们假设我有这样的课程:

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会被销毁吗?

1 个答案:

答案 0 :(得分:3)

临时在完整陈述结束时被销毁。所以这是安全的。