何时是在“std::move()”函数中调用的move构造函数
When is the move constructor called in the `std::move()` function?
函数std::move()
定义为
template<typename T>
typename std::remove_reference<T>::type&& move(T && t)
{
return static_cast<typename std::remove_reference<T>::type&&>( t );
}
有四个地方我可以想象移动构造函数被调用:
- 传递参数时
- 当进行铸造时
- 返回结果时
- 不是在
std::move()
函数本身,而是可能在返回引用最终到达的地方
我会赌4号,但我不能百分之百确定,所以请解释一下你的答案。
没有正在进行的移动构造。std::move()
接受引用并返回引用。std::move()
基本上只是一个演员阵容。
你的猜测4。是正确的(假设您最终实际调用的是move构造函数)。
std::move只是一个类型转换,它告诉编译器该类型是一个右值。
相关文章:
- 瓦尔格林德:数学函数"Conditional jump or move depends on uninitialised value(s)"
- 使用仅使用一次的变量调用的复制构造函数.这可能是通过调用move构造函数进行编译器优化的情况吗
- 返回一个带有 std::move 的对象并链接函数
- 添加自定义析构函数时,Move 构造函数在派生类中消失
- 将向量从 N1 缩小到 N2 项,而不触发默认构造函数并仅使用 move 语义
- 为什么 std::move 不将默认移动构造函数中的源变量更改为默认值?
- 复制elision、std::move和链式函数调用
- std::映射,只有move构造函数可用
- 为什么我的代码中没有调用move构造函数
- std::转换move构造函数的模板专业化的变体
- std::tuple默认构造函数,带有move可构造元素
- 使用 std::move 将参数传递给函数,如果该参数声明为按值传递或使用移动操作数 &&,是否有区别?
- 如何调用move构造函数
- 复制初始化:为什么即使关闭了复制省略,也没有调用move或copy构造函数
- 为什么我们需要在构造函数的初始化列表中使用 std::move?
- 在构造函数中初始化成员时,是否应该在成员上使用 std::move?
- 我可以将 std::move 与不提供 move 构造函数的类一起使用吗?
- 在C中实现C++标准11的std::move函数
- unique_ptr c++ 03仿真中的move函数
- 为什么当定义析构函数时,编译器不再添加默认的move函数和赋值函数