init boost :: opcional de objeto não copiável

O que devo fazer para inicializarboost::optional< T > se tipo subjacenteT não é padrão construtível, não copiável / móvel, mas a instância de alguém ainda pode existir?

É proibido paraboost::optional por quaisquer razões semânticas para ter algum membro funcionar comotemplate< typename... Args > boost::optional< T >::construct(Args && ...args), que fornece todos os argumentos para no localoperator new para construir o objeto inteiramente (para o tipo non-refT) Variante é ter função de não membro comostd::make_shared< T >.

Parece-me que o meu problema pode ser resolvido com o uso destd::unique_ptr/std::shared_ptr, mas neste caso minha pergunta é: "Por queboost::optional o progresso está congelado? "

questionAnswers(1)

yourAnswerToTheQuestion