保证复制文件在构造函数

时间:2016-07-16 22:03:14

标签: c++ c++17

paper P0135R0中有一个例子:

struct NonMoveable {
  NonMoveable(int);
  NonMoveable(NonMoveable&) = delete;
  void NonMoveable(NonMoveable&) = delete;
  std::array<int, 1024> arr;
};
NonMoveable make() {
  return NonMoveable(42); // ok, directly constructs returned object
}
auto nm = make(); // ok, directly constructs 'nm'

这让我很困惑:

void NonMoveable(NonMoveable&) = delete;

这是什么?构造函数如何无效?

UPD。有人联系probable answer - 不!这个问题完全不同。

1 个答案:

答案 0 :(得分:6)

那&#34; void&#34;是我们所说的&#34;拼写错误&#34;。意图可能会删除移动赋值运算符(虽然不是绝对必要的,因为删除复制构造函数会这样做)。考虑到这个人写了&#34; void&#34;,这个人也错过了&&部分并忘记了复制构造函数中的const并不奇怪。参数(也不是绝对必要的)。

基本上,那里有很多错误;有人急着写下来。