init boost :: opcional de objeto no copiable

¿Qué debo hacer para inicializar?boost::optional< T > si tipo subyacenteT ¿es no construible por defecto, no se puede copiar / mover, pero la instancia de uno todavía puede existir?

Esta prohibido porboost::optional Por cualquier razón semántica para tener alguna función miembro comotemplate< typename... Args > boost::optional< T >::construct(Args && ...args), que entrega todos los argumentos al lugaroperator new para construir el objeto en su totalidad (para el tipo no-refT)? Variante es tener función no miembro comostd::make_shared< T >.

Me parece que mi problema se puede resolver mediante el uso destd::unique_ptr/std::shared_ptr, pero en este caso mi pregunta es: "por québoost::optional ¿Se congela el progreso? ".

Respuestas a la pregunta(1)

Su respuesta a la pregunta