¿Es posible mover un impulso :: opcional?

He estado tratando de definir un constructor de movimiento predeterminado en una clase con unboost::optional variable miembro

#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 es compatible tanto con la semántica de movimiento como con los constructores de movimiento predeterminados, pero no puedo hacer 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 alguna manera de mover unboost::optional sin&nbsp;¿Está modificando el código fuente de Boost? ¿O debería esperar hasta que Boost soporte el movimiento?

Tuve el mismo problema conboost::any&nbsp;en el pasado.