我被以下示例在聊天:哪种标准措辞告诉我们,只有“ref-to-const”临时生命周期延长“有效”?
#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
整体,即使它得到绑定到该范围内的ref-const
。
那么可以推测,延长寿命只是“一次工作”;即在func
的参数初始化时应用,但不通过连续绑定传递。
我的解释是否正确?如果是这样(以及是否有任何单独的段落可直接适用),定义此行为的标准措辞是什么?
“func”的第二个参数是什么?如果将它(和'x')关闭,会发生什么? –
@KonradRudolph:我猜,它是为了演示相对于文本'“main”输出的破坏顺序。 –