He estado tratando de definir un constructor de movimiento predeterminado en una clase con una variable de miembro boost::optional
.¿Es posible mover un impulso :: opcional?
#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));
}
Mi compilador soporta tanto mover la semántica y constructores se mueven en mora, pero no puedo conseguir que esto funcione.
% 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.
¿Hay una manera de mover un boost::optional
sin modificar el código fuente de Boost? ¿O debería esperar hasta que Boost apoye el movimiento?
Tuve el mismo problema con boost::any
en el pasado.
Alguien en #boost me señaló esto: https://svn.boost.org/trac/boost/ticket/1841 –