0
讓我們假設我有這樣的類:C++函數調用臨時對象的生命週期
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會被銷燬?
但是這裏實際上是兩個嵌套的臨時對象,它們會以相反的順序被銷燬? – user1244932
這裏沒關係。只有當第二個臨時存在時,第二個臨時存在才重要。 –