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?".