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

Why create std::move and not use static_cast

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

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

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

快速搜索提案 n1377

The static_cast<A&&> syntax is admittedly ugly. This is not necessarily a bad thing as you want to clearly call out when you are doing something as dangerous (and useful!) as moving from an lvalue. But the cast can become so ugly as to be unreadable when the type A is a long complicated identifier.