init boost :: opcjonalny obiekt nie do skopiowania
Co powinienem zrobić, aby zainicjowaćboost::optional< T >
jeśli typ bazowyT
nie jest domyślny, konstruktywny, nie można go skopiować / przenieść, ale jego instancja wciąż może istnieć?
Czy jest to zabronioneboost::optional
z jakichkolwiek semantycznych powodów, aby mieć jakąś funkcję członkatemplate< typename... Args > boost::optional< T >::construct(Args && ...args)
, która dostarcza wszystkich argumentów, aby je zastosowaćoperator new
skonstruować obiekt całkowicie (dla typu innego niż refT
)? Wariant polega na tym, że funkcja nie jest członkiemstd::make_shared< T >
.
Wydaje mi się, że mój problem można rozwiązać za pomocąstd::unique_ptr
/std::shared_ptr
, ale w tym przypadku moje pytanie brzmi: „Dlaczegoboost::optional
postęp jest zamrożony? ”.