我有一个类型,我从中删除了复制构造函数,我想拥有一个vector
这种类型,所以我需要通过emplace_back
. 但是,似乎需要一个复制构造函数,因为编译器会发出警告,指出由于复制构造函数已被删除emplace_back
而无法实例化。emplace_back
为什么需要复制构造函数?我认为重点是在不复制任何内容的情况下emplace_back
构建。vector
我什至可以拥有一个vector
没有复制构造函数的对象吗?
class MyType {
public:
MyType(std::array<double, 6> a) {}
MyType(const MyType& that) = delete;
};
int main() {
std::vector<MyType> v;
std::array<double, 6> a = {1,2,3,4,5,6};
v.emplace_back(a);
}
编译器是 clang/llvm。