मुझे पता है कि सी ++ 11 में हम अब using
उपयोग कर सकते हैं प्रकार उर्फ लिखने के typedef
तरह,:सी ++ 11 में 'टाइपपीफ' और 'उपयोग' के बीच क्या अंतर है?
typedef int MyInt;
है, मैं क्या समझ से, बराबर करने के लिए:
using MyInt = int;
और वह नई वाक्य रचना प्रयास से उभरा "template typedef
" व्यक्त करने के लिए एक तरह से करने के लिए:
template< class T > using MyType = AnotherType< T, MyAllocatorType >;
लेकिन पहले दो गैर-टी के साथ, emplate उदाहरण, मानक में कोई अन्य सूक्ष्म मतभेद हैं? उदाहरण के लिए, typedef
एस "कमजोर" तरीके से अलियासिंग करते हैं। यही वह नया प्रकार नहीं बनाता है लेकिन केवल एक नया नाम (रूपांतरण उन नामों के बीच निहित है)।
क्या यह using
के साथ समान है या यह एक नया प्रकार उत्पन्न करता है? क्या कोई अंतर है?
मैं व्यक्तिगत रूप से नई वाक्य रचना पसंद करते हैं क्योंकि यह बहुत अधिक नियमित रूप से चर काम के समान है, पठनीयता में सुधार काफी हद तक एक ही कर रहे हैं। उदाहरण के लिए, क्या आप 'टाइपिफ शून्य (& MyFunc) (int, int);' या 'MyFunc = void (int, int) का उपयोग करते हैं; '? –
मैं पूरी तरह से सहमत हूं, मैं केवल नए सिंटैक्स का उपयोग करता हूं। यही कारण है कि मैं यह सुनिश्चित करने के लिए कह रहा था कि वास्तव में कोई अंतर नहीं है। – Klaim
@MatthieuM। वे दो अलग बीटीडब्ल्यू हैं। यह 'typedef शून्य MyFunc (int, int) होना चाहिए; '(जो वास्तव में बुरा नहीं दिखता है), या' MyFunc = void (&) (int, int) का उपयोग करना;' –