gpt4 book ai didi

c++ - 我看到的所有基于 std::move() 的 std::swap() 实现都是错误的吗?

转载 作者:太空狗 更新时间:2023-10-29 19:37:06 26 4
gpt4 key购买 nike

<分区>

Possible Duplicate:
What can I do with a moved-from object?

例如,参见 this code :

template<class T> 
void swap(T& a, T& b)
{
T tmp(std::move(a));
a = std::move(b);
b = std::move(tmp);
}

这只是我的问题,还是这里有错误?如果你moveatmp,那么a不就失效了吗?

即从 ba 的 move 赋值不应该是一个 move 构造函数调用,而不是放置 new 吗?
如果不是,那么 move 构造函数和 move 赋值运算符有什么区别?

template<class T>
void swap(T& a, T& b)
{
T tmp(std::move(a));
new(&a) T(std::move(b));
new(&b) T(std::move(tmp));
}

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