【发布时间】:2021-11-03 12:02:06
【问题描述】:
来自C++ 编程语言标准工作草案的[class.temporary]:
(6.12) — 临时绑定到 new-initializer ([expr.new]) 中的引用,直到包含 new-initializer。
[注 7:这可能会引入一个悬空引用。 — 尾注]
[示例 5:
struct S { int mi; const std::pair<int,int>& mp; }; S a { 1, {2,3} }; S* p = new S{ 1, {2,3} }; // creates dangling reference——结束示例]
这是否意味着绑定到S 的引用成员mp 的临时对象{2,3} 会一直持续到表达式new S { 1, {2,3} } 的求值,或者直到表达式S* p = new S{ 1, {2,3} } 的求值?
【问题讨论】:
-
完整表达式为
S* p = new S{ 1, {2,3} }。 -
@Jarod42 谢谢,您想发布答案吗?
标签: c++ reference new-operator object-lifetime temporary-objects