सी ++ 17 में Callable
अवधारणा होगी और मैं सोच रहा था कि std::is_function<T>::value
true
के साथ वास्तव में क्या अंतर था। क्या वे बराबर हैं? क्या एक दूसरे का सुपरसैट है?कॉल करने योग्य अवधारणा और std :: is_function प्रकार लक्षणों के बीच क्या अंतर है?
उत्तर
सी ++ 17 एक
Callable
अवधारणा
यह सी ++ 11 के बाद से मानक में नहीं है होगा।
क्या वे समकक्ष हैं? क्या एक दूसरे का सुपरसैट है?
नहीं, वास्तव में, वे पूरी तरह से विवादित हैं। Callable
केवल ऑब्जेक्ट प्रकारों पर लागू होता है, और पॉइंटर-टू-सदस्यों से सभी प्रकारों को ओवरलोडेड operator()
प्रकारों में फ़ंक्शन पॉइंटर्स के फ़ंक्शन पॉइंटर्स में अंतर्निहित रूपांतरण के साथ टाइप करने के लिए टाइप करता है।
is_function
केवल वास्तविक कार्य प्रकारों के लिए सत्य है, जो परिभाषा के अनुसार, ऑब्जेक्ट प्रकार नहीं हैं।
क्या 'कॉल करने योग्य' कार्यों पर भी लागू नहीं होता है? –
@NeilKirk नहीं, मानक द्वारा नहीं। [\ [Func.wrap.func \]/2] देखें (http://eel.is/c++draft/func.wrap.func#2) ("टाइप एफ का एक कॉल करने योग्य ऑब्जेक्ट f कॉल करने योग्य है ... "), [\ [func.def \]/3-4] (http://eel.is/c++draft/function.objects#func.def-3) (" एक कॉल करने योग्य प्रकार फ़ंक्शन ऑब्जेक्ट प्रकार है या सदस्य के लिए एक सूचक। एक कॉल करने योग्य वस्तु एक कॉल करने योग्य प्रकार का एक वस्तु है। "), और [\ [function.objects \]/1] (http://eel.is/c++draft/function.objects# 1) ("एक फ़ंक्शन ऑब्जेक्ट प्रकार एक ऑब्जेक्ट प्रकार है जो फ़ंक्शन कॉल में पोस्टफिक्स-अभिव्यक्ति का प्रकार हो सकता है।") –
एलडब्ल्यूजी [यहां शब्द को समायोजित करने की संभावना है] (http://wg21.link/lwg2393), लेकिन इस तरह से इस तरह से प्रभावित नहीं होता है (शायद 'कॉल करने योग्य' को 'Lvalue-Callable'' नाम देने के अलावा)। –
- 1. पैरामीटर परिभाषाओं के बीच अंतर (प्रकार और नाम), और (प्रकार * नाम) के बीच अंतर क्या हैं?
- 2. स्कैला और सी ++ लक्षणों के बीच संबंध क्या है
- 3. :: std :: string और std :: string के बीच क्या अंतर है?
- 4. std :: cout और std :: wcout के बीच क्या अंतर है?
- 5. std :: condition_variable और std :: condition_variable_any के बीच क्या अंतर है?
- 6. std :: merge और std :: set_union के बीच क्या अंतर है?
- 7. std :: partial_sum और std :: inclusive_scan के बीच क्या अंतर है?
- 8. std :: tie और std :: make_tuple के बीच std :: ref arguments के बीच क्या अंतर है?
- 9. std :: quick_exit और std :: abort के बीच क्या अंतर है और std :: quick_exit क्यों आवश्यक था?
- 10. फ़ंक्शन ऑब्जेक्ट और कॉल करने योग्य ऑब्जेक्ट के बीच क्या अंतर है?
- 11. सिस्टम कॉल और लाइब्रेरी कॉल के बीच क्या अंतर है?
- 12. '# ^' प्रकार संकेत और `^ 'प्रकार संकेत के बीच क्या अंतर है?
- 13. (प्रकार) मान और प्रकार (मान) के बीच क्या अंतर है?
- 14. "यूटीएफ -16" और "std :: wstring" के बीच क्या अंतर है?
- 15. std :: is_integer और std :: is_integral के बीच अंतर?
- 16. फ़ंक्शन "मेल()" और "@mail()" कॉल के बीच क्या अंतर है?
- 17. कॉल करने योग्य-इटरेटर और लिस्टाइटर और इटरेटर के बीच अंतर?
- 18. फ़ंक्शन कॉल और फ़ंक्शन संदर्भ के बीच क्या अंतर है?
- 19. कॉल स्टैक और स्टैक ट्रेस के बीच क्या अंतर है?
- 20. संदर्भ द्वारा कॉल के बीच क्या अंतर है और
- 21. "कॉल" और "आमंत्रण" के बीच क्या अंतर है?
- 22. std :: string :: c_str और std :: string :: डेटा के बीच क्या अंतर है?
- 23. भौतिक एड्रेसिंग और वर्चुअल एड्रेसिंग अवधारणा के बीच अंतर
- 24. क्या std :: set :: iterator और std :: set :: const_iterator के बीच कोई परिचालन अंतर है?
- 25. QQmlAplicationEngine और QQuickView के बीच क्या अंतर है? इस प्रकार
- 26. std :: uninitialized_copy और std :: copy के बीच अंतर?
- 27. ओपनजीएल में फ्रेमबफर और रेंडरबफर के बीच की अवधारणा और अंतर क्या है?
- 28. std :: थ्रेड कन्स्ट्रक्टर क्या पॉइंटर पास करने और रेफरी से गुज़रने के बीच कोई अंतर है?
- 29. std :: logical_not और std :: not1 के बीच अंतर?
- 30. पहला बच्चा और: पहले प्रकार के बीच क्या अंतर है?
अच्छी तरह से, अधिभारित 'ऑपरेटर()' वाला ऑब्जेक्ट कॉल करने योग्य है, लेकिन फ़ंक्शन –
@ एमएम मुझे लगता है कि समस्या नाम के साथ निहित है। कार्य * कॉल करने योग्य हैं, लेकिन फ़ंक्शन ऑब्जेक्ट्स भी हैं। यह बहुत बुरा है कि कोई बेहतर नाम नहीं है ...? – VermillionAzure