(POD)结构上是否需要移动构造函数?

时间:2013-08-20 23:15:05

标签: c++ constructor move

在C ++ 11标准的第12.8 / 15段中定义:

  

非联合类X的隐式定义的复制/移动构造函数执行其基础和成员的成员复制/移动。 [...]

这是否意味着:

struct st {
  int a;
  int b;
  // ...
};

// ...
void do_smt(st tmp) {
  st lala(std::move(tmp));
  // ...
}

// ...
int main(int argc, char* argv[]) {
  st test(1, 2);
  do_smt(std::move(test));
}

在没有移动构造函数的情况下可以工作吗?

1 个答案:

答案 0 :(得分:3)

是的,它可以在不需要指定移动构造函数的情况下工作;在您的示例中,编译器可能通过初始化lala而不是test来优化移动操作;检查汇编器输出。