在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/