I am trying to create a object using boost object_pool, but trying to use
the move constructor of the desired object, but on Visual 2013, I am always
getting:
error C2664: 'MyObject::MyObject(const MyObject &)' : cannot convert
argument 1 from 'MyObject (__cdecl &)(void)' to 'MyObject &&'
The error happens because boost pool construct method always assume a const
parameter.
Sample code:
#include
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));}
Is there any way to invoke the move constructor using boost::object_pool?
Thanks
Bruno Sanches
========================
http://www.pontov.com.br