gpt4 book ai didi

c++ - 具有临时子表达式的临时对象的生命周期,绑定(bind)到一个引用

转载 作者:太空狗 更新时间:2023-10-29 20:21:21 30 4
gpt4 key购买 nike

mainp 的以下使用是否安全?我相信绑定(bind) mk_pair 生成的临时对象的生命周期已延长到 p 的生命周期,但是 Wrap{1} 创建的临时对象又如何呢?和 Wrap{2}?

struct Wrap { int &&x; };

struct Pair { Wrap &&w1, &&w2; };

Pair mk_pair(Wrap &&w1, Wrap &&w2) { return Pair{std::move(w1),std::move(w2)}; }

int main(int argc, char *argv[])
{
Pair &&p = mk_pair(Wrap{1},Wrap{2});
std::cout << p.w1.x << ' ' << p.w2.x << '\n';
return 0;
}

最佳答案

没有。 Wrap{1}Wrap{2} 未绑定(bind)到 main 中的自动引用,因此它们在行尾被破坏。

mk_pair 返回的 Pair 的生命周期延长到 p 的生命周期,但它的引用是悬空的。

关于c++ - 具有临时子表达式的临时对象的生命周期,绑定(bind)到一个引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44461266/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com