我在聊天中看到了以下示例:
#include <iostream>
struct foo { ~foo() { std::cout << "destroying!\n"; } };
const foo& func(const foo& a, const foo&) { return a; }
int main()
{
foo x;
const foo& y = func(foo(), x);
std::cout << "main\n";
}
输出:
destroying!
main
destroying!
它似乎表明foo
临时的生命周期没有扩展到整个main
,即使它被绑定到const
该范围内的 ref-to- 。
那么,可以推测,延长寿命只能“工作一次”;也就是说,它在func
' 的参数被初始化时应用,但不通过连续绑定传递。
我的解释正确吗?如果是这样(并且如果任何单独的段落直接适用)定义这种行为的标准措辞是什么?