【发布时间】:2014-05-04 23:37:27
【问题描述】:
我正在尝试使用 boost object_pool 创建一个对象,但尝试使用所需对象的移动构造函数,但在 Visual 2013 上,我总是得到:
错误 C2280: 'MyObject::MyObject(const MyObject &)' : 试图引用已删除的函数
发生错误是因为 boost pool 构造方法总是假定一个 const 参数。
示例代码:
#include <boost/pool/object_pool.hpp>
class MyObject
{
public:
MyObject():
m_iData(0)
{
}
MyObject(MyObject &&other):
m_iData(std::move(other.m_iData))
{
other.m_iData = 0;
}
MyObject(const MyObject &rhs) = delete;
MyObject &operator=(const MyObject &rhs) = delete;
private:
int m_iData;
};
int main(int, char**)
{
boost::object_pool<MyObject> pool;
MyObject obj;
MyObject *pObj = pool.construct(std::move(obj));
}
有没有办法使用 boost::object_pool 调用移动构造函数?
谢谢
【问题讨论】:
标签: c++ visual-c++ boost pool