在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 - 不!这个问题完全不同。
答案 0 :(得分:6)
那&#34; void&#34;是我们所说的&#34;拼写错误&#34;。意图可能会删除移动赋值运算符(虽然不是绝对必要的,因为删除复制构造函数会这样做)。考虑到这个人写了&#34; void&#34;,这个人也错过了&&
部分并忘记了复制构造函数中的const
并不奇怪。参数(也不是绝对必要的)。
基本上,那里有很多错误;有人急着写下来。