c – std :: vector emplace_back()用于非复制可构建对象
考虑到这个来自
en.cppreference.com的关于std :: vector :: emplace_back的引用
以下示例: #include <vector> struct A { A(int){} A(A const&) = delete; }; int main() { std::vector<A> vec; vec.emplace_back(1); return 0; } 在线vec.emplace_back(1); Visual Studio 2013 / GCC报告:
错误是否正确?你能解释一下为什么吗 解决方法
C 11 23.2.1表101规定:
您的A不符合MoveInsertable要求,因为您没有移动构造函数,只有一个已删除的副本构造函数.与std :: vector,it works之外的容器. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |