Я пытаюсь переместить член std :: future в другой член того же класса.
Мне нужно это сделать, потому что если я хочу вызвать std :: vector.push_back (MyClass), мне нужно удалить конструктор копирования с простой ссылкой и создать еще один с двойным ref, потому что мой класс содержит std :: будущий член.
Когда я перемещаю std :: future, G ++ говорит:
call to deleted constructor of 'std::future<int>'
_future(std::move(p_myclass._future));
note: 'future' has been explicitly marked deleted here
future(const future&) = delete
Но для меня std :: move возвращает двойную ссылку, а не одну. Поэтому я не знаю, откуда эта ошибка.
Я пробовал оператор присваивания = с двойным ref, но тоже не работает.
class MyClass
{
private:
std::future<int> _future;
public:
MyClass(const MyClass&) = delete;
MyClass(const MyClass&&);
MyClass& operator=(MyClass &) = delete;
MyClass& operator=(MyClass &&);
};
MyClass::MyClass(const MyClass &&p_myclass) : _future(std::move(p_myclass._future)) {};
MyClass& MyClass::operator=(MyClass &&p_myclass)
{
this->_future = std::move(p_myclass._future);
return (*this);
};
Конечно, мой std :: future инициализируется в главном конструкторе, но здесь нет необходимости его вставлять.
Оба не работают.
Спасибо за совет.