क्या कोई मुझे बता सकता है कि C++ 17 का std::get<T>
क्यों वैश्विक कार्य है और variant<...>
का सदस्य-कार्य नहीं है?`variant` वैश्विक कार्य के लिए std :: <T> क्यों प्राप्त करें?
उत्तर
यदि get<T>()
सदस्य फ़ंक्शन टेम्पलेट थे, तो template
कीवर्ड वौडल की आवश्यकता होती है जब इसे एक निर्भर संदर्भ में बुलाया जाता है। उदाहरण के लिए:
template <typename Variant>
void f(Variant const& v) {
auto x0 = v.template get<T>(); // if it were a member
auto x1 = get<T>(v); // using a non-member function
}
यहां तक कि एक using
घोषणा या निर्देश get()
अगर std::variant<...>
और get()
दोनों के रूप में पाया बिना नाम स्थान std
घोषित किये गए हैं। इस प्रकार, ऐसा लगता है कि वैश्विक कार्य को उपयोग करना आसान है क्योंकि इसे सदस्य कार्य करने का कोई अच्छा कारण नहीं है।
ठीक है, आपको
@ टी.सी. .: अच्छा बिंदु - टेम्पलेट पैरामीटर के साथ यह सीधे एडीएल के माध्यम से नहीं मिलता है। यह वैश्विक दायरे में घोषित किए जाने वाले एक अनावश्यक फ़ंक्शन टेम्पलेट के लिए बहस कर सकता है (उदा।, 'टेम्पलेट
- 1. रिटर्न प्रकार std :: वैकल्पिक <std :: variant <...>>
- 2. std :: variant के प्रस्तावित इंटरफ़ेस
- 3. boost :: variant से इंडेक्स द्वारा आइटम प्राप्त करें जैसे std :: variant
- 4. std :: variant को अन्य std :: variant में प्रकारों के सुपर-सेट
- 5. Boost :: variant
- 6. क्यों वैश्विक कार्य में शून्य है?
- 7. `boost :: variant`
- 8. सेलेरी - वर्तमान कार्य के लिए कार्य आईडी प्राप्त करें
- 9. std :: '/ जी' वैश्विक संशोधक
- 10. पायथन कार्य वैश्विक चर?
- 11. क्यों std :: cout << main << std :: endl prints 1?
- 12. क्यों std :: stof, std :: stod, और std :: अपवादों के साथ स्टॉल हैंडल त्रुटियां क्यों करें?
- 13. बिट्स से इंटीजर प्राप्त करें 'std :: vector <char> `
- 14. कार्य रद्दीकरण प्राप्त करें
- 15. boost :: variant visitor गलत अधिभार चुनता है
- 16. मैं std :: ट्रांसफॉर्म में std :: <0> प्राप्त क्यों नहीं कर सकता?
- 17. std :: sub_match <T> सार्वजनिक रूप से std :: pair <T, T> से क्यों प्राप्त होता है?
- 18. async कार्य <HttpResponseMessage> VS HttpResponseMessage प्राप्त करें
- 19. बूस्ट ग्राफ लाइब्रेरी का स्रोत() `वैश्विक कार्य क्यों है?
- 20. std :: सूची <std::future> विनाशक
- 21. अजवाइन में विशिष्ट कार्य नाम के लिए सभी कार्यों के लिए कार्य स्थिति कैसे प्राप्त करें?
- 22. वैश्विक ऑपरेटर की जांच के लिए SFINAE का उपयोग <<?
- 23. ऑपरेटर << std :: ostream और char एक गैर-सदस्य फ़ंक्शन के बीच क्यों कार्य करता है?
- 24. std :: shared_ptr <T> = std :: unique_ptr <T[]> संकलन क्यों करता है, जबकि std :: shared_ptr <T[]> = std :: unique_ptr <T[]> नहीं है?
- 25. 'ऑपरेटर <<' के लिए 'std :: cout <<' में अस्पष्ट अधिभार <<
- 26. अमान्य ऑपरेटर <std :: सूची
- 27. std :: टेम्पलेट पैरामीटर के रूप में कार्य
- 28. std :: tuple के तत्व के संदर्भ में कैसे प्राप्त करें?
- 29. क्यों और कैसे ऑपरेटर अधिभारित करें << प्रिंटिंग के लिए
- 30. विंडोज शेयर (एसएमबी) की प्रतिलिपि बनाने के लिए चींटी कार्य
मैं पूरक प्रश्न पूछूंगा: यह सदस्य कार्य क्यों होना चाहिए? –
[टुपल के समान] [https://stackoverflow.com/questions/3313479/stdtuple-get-member- कार्यक्षमता) निश्चित रूप से। वाक्यविन्यास बहुत बदसूरत हो जाता है। –