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-不!这个问题完全不同。

最佳答案

那个“空洞”就是我们所说的“错别字”。该意图可能会删除移动分配运算符(尽管并非绝对必要,因为删除复制构造函数可以做到这一点)。考虑到该人写了“void”,因此也错过了&&部分,并且忘记了复制构造函数的参数中的const,这也就不足为奇了(也并非绝对必要)。

基本上,这里有很多错误;有人急着写了。

关于c++ - 保证复印纸在构造函数中对void的使用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38416061/

10-15 00:28