Co należy zrobić, aby zainicjować boost::optional<T>
, jeśli podstawowy typ T
nie jest domyślną konstrukcyjną, niekopiowalną/ruchomą, ale czyja instancja nadal istnieje?init boost :: opcjonalny niekopiowalny obiekt
Zabrania dla boost::optional
żadnymi semantycznych powodów, aby mieć jakąś funkcję składową podobnego template< typename... Args > boost::optional<T>::construct(Args && ...args)
, który dostarcza wszystkie argumenty w miejscu operator new
na budowę obiektu w całości (dla non-ref typu T
)? Wariant ma mieć funkcję nie będącą członkiem, taką jak std::make_shared<T>
.
Wydaje mi się, że mój problem może być rozwiązany poprzez zastosowanie od std::unique_ptr
/std::shared_ptr
, ale w tym przypadku moje pytanie brzmi: „Dlaczego boost::optional
postęp jest zamrożony?”.
co, jeśli domyślne jest skonstruowane? Czy istnieje sposób na skonstruowanie niekopiowanego boostu :: opcjonalnie bez boost :: in_place? moje różne próby nie udało się skompilować – Geronimo