Я пытался определить конструктор перемещения по умолчанию в классе с переменной-членом boost::optional
.Можно ли переместить boost :: optional?
#include <boost/optional.hpp>
#include <utility>
#include <vector>
struct bar {std::vector<int> vec;};
struct foo {
foo() = default;
foo(foo&&) = default;
boost::optional<bar> hello;
};
int main() {
foo a;
foo b(std::move(a));
}
Моего компилятор поддерживает движение семантики и дефолт перемещения конструкторов, но я не могу получить эту работу.
% clang++ foo.cc -std=c++11 -stdlib=libc++ foo.cc:15:7: error: call to deleted constructor of 'foo' foo b(std::move(a)); ^~~~~~~~~~~~~ foo.cc:9:3: note: function has been explicitly marked deleted here foo(foo&&) = default; ^ 1 error generated.
Есть ли способ, чтобы переместить boost::optional
без модификации исходного кода BOOST в? Или я должен ждать, пока Boost поддерживает перемещение?
У меня была такая же проблема с boost::any
в прошлом.
Кто-то в #boost указал мне на это: https://svn.boost.org/trac/boost/ticket/1841 –