gpt4 book ai didi

c++ - 是否保证 `[](std::list& list){return std::move(list)}(list)`保留 `list`为空?

转载 作者:行者123 更新时间:2023-12-02 09:50:22 25 4
gpt4 key购买 nike

更具体地说:

struct A{
std::list<int> list;
std::list<int> foo(){
return std::move(list);
}
}

A a;
// insert some elements into a.list
a.foo(); // is this guaranteed to clear a.list?

是否保证上面的最后一行将 a.list留空?

最佳答案

不可以。从大多数标准库类中迁移出来会使它们处于“有效但未指定的状态” [1]。这意味着您必须明确清除a.list,以确保移动后它为空。

[1]此规则有异常(exception):最值得注意的是,移动后std::unique_ptr必须为null。

关于c++ - 是否保证 `[](std::list<int>& list){return std::move(list)}(list)`保留 `list`为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60175782/

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