What should I do to initialize boost::optional< T > if underlying type T is non-default constructible, non-copyable/moveable, but one's instance still can exist?
Is it forbidden for boost::optional by any semantic reasons to have some member function like template< typename... Args > boost::optional< T >::construct(Args && ...args), that delivers all the arguments to in-place operator new to construct the object entirely (for non-ref type T)? Variant is to have non-member function like std::make_shared< T >.
It seems to me, that my problem can be solved by means of using of std::unique_ptr/std::shared_ptr, but in this case my question is: "Why boost::optional progress is frozen?".