在下面的示例中,我有一个函数foo
,该函数接受string_view
作为输入,并且bar
返回一个临时值。
std::string bar() {
return "abc";
}
void foo(std::string_view input) {
std::cout << input;
}
问题是:为什么以下(惯用的)用法正确?
foo(bar());
具体来说:是什么保证了从string
返回的临时bar
在执行foo
时仍然有效
或者换种说法:是什么能保证临时string
在执行string_view
之前不被破坏?