我被以下示例在聊天:哪種標準措辭告訴我們,只有「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」輸出的破壞順序。 –