Tôi nên làm gì để khởi tạo boost::optional<T>
nếu kiểu cơ bản T
là không thể mặc định, không thể sao chép/di chuyển được, nhưng vẫn có thể tồn tại?init boost :: tùy chọn đối tượng không thể sao chép
Is it cấm cho boost::optional
bởi bất kỳ lý do ngữ nghĩa có một số chức năng thành viên như template< typename... Args > boost::optional<T>::construct(Args && ...args)
, mà cung cấp tất cả các đối số tại chỗ operator new
để xây dựng các đối tượng hoàn toàn (đối với phi ref loại T
)? Biến thể là có chức năng không phải thành viên như std::make_shared<T>
. Có vẻ như với tôi, vấn đề của tôi có thể được giải quyết bằng cách sử dụng std::unique_ptr
/std::shared_ptr
, nhưng trong trường hợp này câu hỏi của tôi là: "Tại sao boost::optional
tiến trình bị đóng băng?".
nếu cấu hình mặc định là gì? Có cách nào để xây dựng một tăng noncopyable :: tùy chọn mà không cần tăng :: in_place? những nỗ lực khác nhau của tôi đã không biên dịch được – Geronimo