Что мне делать, чтобы инициализировать boost::optional< T >
, если базовый тип T
нестандартно конструктивен, не копируется/перемещается, но один экземпляр все еще может существовать?
Невозможно ли для boost::optional
для boost::optional
по каким-либо семантическим причинам использовать некоторую функцию-член, например template< typename... Args > boost::optional< T >::construct(Args && ...args)
, которая предоставляет все аргументы на месте operator new
для полного создания объекта (для не-ref type T
)? Вариант должен иметь функцию, отличную от члена, например std::make_shared< T >
.
Мне кажется, что моя проблема может быть решена с помощью использования std::unique_ptr
/std::shared_ptr
, но в этом случае мой вопрос: "Почему прогресс boost::optional
заморожен?".