为什么下面的代码在
g++
版本 4.9.2 上无法工作?如果我尝试构建它,编译器会抱怨在告诉向量保留更多内存的行中缺少复制构造函数。
为什么以下代码在 g++
版本 4.9.2 中无法使用?如果我尝试进行构建,则编译器会抱怨在告知向量保留更多内存的那一行中缺少复制构造函数。
#include <vector>
class Number
{
public:
explicit Number(const int& i) : _value(i) {}
Number(const Number& other) = delete;
Number& operator=(const Number& other) = delete;
private:
int _value;
};
int main(int argc, char** argv)
{
std::vector<Number> numbers;
numbers.reserve(8);
return 0;
}
当向量的存储大小增加时,为什么编译器会尝试调用已删除的复制构造函数?无论如何,向量内部都没有对象。