为什么创建 std::move 而不是使用 static_cast

时间:2021-06-23 19:56:29

标签: c++ move-semantics

我不明白为什么必须创建 std::move()。难道一切都不能只是 static_cast<T&&>() 吗?我发现可能创建 std::move() 的唯一原因只是为了使代码更易于阅读。因此,程序员无需看到 static_cast,而是可以看到 std::move() 并了解它在做什么。除此之外,我看不出任何目的。有人能帮我理解他们为什么创建 std::move() 吗?。

2 个答案:

答案 0 :(得分:8)

是的,主要是关于可读性。

除了明确表达意图之外,std::move 不需要您手动编写类型。

答案 1 :(得分:3)

快速搜索提案 n1377

<块引用>

static_cast 语法确实很丑。这不是 一定是件坏事,因为你想清楚地喊出你什么时候 做一些与从左值移动一样危险(和有用!)的事情。 但是当类型 A 为 一个长而复杂的标识符。