जबकि std::experimental::optional
(cppreference.com) मैं एक विशिष्ट निर्माता के विनिर्देश, अर्थात् से उलझन में मिल गया को लागू करने:std :: प्रयोगात्मक :: वैकल्पिक <T> कार्यान्वयन: Constexpr निर्माता भ्रम
constexpr optional(const T& value); // (4)
(Source)
यह कन्स्ट्रक्टर constexpr
संदर्भ में निर्मित होने के लिए, एक छोटे से विनाशकारी प्रकार T
के लिए optional<T>
की अनुमति देता है। जबकि पहली आवश्यकता, अर्थात् optional<T>
को एक शाब्दिक प्रकार बनाने के लिए उपयोगकर्ता द्वारा प्रदान किए गए विनाशक को बंद करना, हल करने के लिए सीधे आगे है, मुझे नहीं पता कि की सीमा के आसपास कैसे जाना है- नई जगह को कॉन्टेक्सप्र में अनुमति नहीं दी जा रही है ।
मैंने सोचा कि मैं std::aligned_storage<T>
का उपयोग कर प्रकार T
कि constructible डिफ़ॉल्ट नहीं कर रहे हैं और किसी भी संरेखण आवश्यकताओं को पूरा, यदि लागू हो अनुमति देने के लिए optional<T>
लागू करने के लिए चाहिए था। लेकिन जैसा कि मैंने कहा, constexpr
मुझे उस विशेष निर्माता में प्लेसमेंट का उपयोग करने से मना कर देता है।
क्या मुझे बहुत कॉफी चाहिए और मुझे यहां कोई स्पष्ट समाधान नहीं दिख रहा है?
आप
की संभावित डुप्लिकेट [कैसे एक std :: वैकल्पिक इस्तेमाल करना चाहिए?] (Http://stackoverflow.com/questions/16860960/how-should-one- उपयोग-stdoptional) – Matriac
@Matriac यह कार्यान्वयन पक्ष के बारे में एक सवाल है। – nshct
एक 'संघ' इस विशेष निर्माता के लिए काम कर सकता है, लेकिन मुझे विश्वास नहीं है कि यह सभी मामलों को संभालने के लिए पर्याप्त होगा। – hvd