保证复制省略纸在构造函数中使用 void

Guaranteed copy elision paper's use of void in a constructor

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;

这是什么?构造函数怎么可以为空?

更新。有人链接 probable answer - 不!这个问题完全不同。

"void" 就是我们所说的 "typo"。意图很可能是删除移动赋值运算符(尽管不是绝对必要的,因为删除复制构造函数就可以做到这一点)。考虑到这个人写了 "void",所以这个人也错过了 && 部分,并且忘记了复制构造函数参数中的 const 也就不足为奇了(也不是绝对必要的)。

基本上,那里有很多错误;有人匆忙写了。