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

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

最佳答案

临时语句在完整语句的末尾被销毁。所以这很安全。

关于c++ - 临时对象的生存期:在嵌套函数调用中迭代到临时 vector ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33263110/

10-15 04:44