相关疑难解决方法(0)

何时在`std :: move()`函数中调用移动构造函数?

该功能std::move()定义为

template<typename T>
typename std::remove_reference<T>::type&& move(T && t)
{ 
    return static_cast<typename std::remove_reference<T>::type&&>( t ); 
}
Run Code Online (Sandbox Code Playgroud)

有四个地方我可以想象要调用的移动构造函数:

  1. 参数传递时.
  2. 演员表演时.
  3. 返回结果时.
  4. 不在std::move()函数本身,但可能在返回的引用最终到达的位置.

我敢打赌4号,但我不是百分百肯定,所以请解释你的答案.

c++ rvalue-reference move-semantics c++11

13
推荐指数
1
解决办法
688
查看次数

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

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

c++ move-semantics

3
推荐指数
1
解决办法
123
查看次数

标签 统计

c++ ×2

move-semantics ×2

c++11 ×1

rvalue-reference ×1