boost::optional<T>
प्रारंभ करने के लिए मुझे क्या करना चाहिए यदि अंतर्निहित प्रकार T
गैर-डिफ़ॉल्ट रचनात्मक, गैर-प्रतिलिपि/चलने योग्य है, लेकिन किसी का उदाहरण अभी भी मौजूद हो सकता है?init boost :: गैर-प्रतिलिपि ऑब्जेक्ट का वैकल्पिक
यह template< typename... Args > boost::optional<T>::construct(Args && ...args)
जैसे कुछ सदस्य समारोह के लिए किसी भी अर्थ कारणों से boost::optional
के लिए मना किया है, कि करने के लिए सभी तर्कों बचाता है यथा-स्थान operator new
वस्तु पूरी तरह से (गैर रेफरी प्रकार T
के लिए) के निर्माण के लिए? संस्करण std::make_shared<T>
जैसे गैर-सदस्य कार्य होना है।
मुझे ऐसा लगता है, कि मेरी समस्या std::unique_ptr
/std::shared_ptr
का उपयोग कर के माध्यम से हल किया जा सकता है, लेकिन इस मामले में मेरे सवाल है: "क्यों boost::optional
प्रगति जमे हुए है?"।
यदि यह डिफ़ॉल्ट रूप से रचनात्मक है तो क्या होगा? एक noncopyable बूस्ट बनाने के लिए कोई तरीका है :: बिना बढ़ावा के वैकल्पिक :: in_place? मेरे विभिन्न प्रयास संकलन में विफल रहे हैं – Geronimo