के रूप में टिप्पणी में कहा, पहले मामले में आप वास्तव में, एक जो using
घोषणा-पत्र शामिल करने के लिए एक नाम स्थान में से कोई नाम निर्यात कर रहे हैं, जबकि दूसरे मामले में आप नाम स्थान में एक उपनाम है कि using
बयान को परिभाषित कर रहे जो उस विशिष्ट नाम और इसके आस-पास के नामस्थान को इंगित करता है।
उदाहरण के लिए, दूसरा अभिव्यक्ति के साथ आप निम्नलिखित एक की तरह उपनाम परिभाषित कर सकते हैं:
using Foo = Bar<MyClass>;
template <class C>
using Foo = Bar<C, MyClass>;
जबकि पहले using
अभिव्यक्ति नहीं कर सकते, यह केवल कार्य करता है के नाम लोगों की तुलना में अलग स्थानों में उपलब्ध होने की यह बताने के लिए जिसमें उन्हें शामिल है।
घोषणाओं और उपनाम (प्रकार और टेम्पलेट वाले) का उपयोग करके निर्देशों का उपयोग करने के बारे में अधिक जानकारी के लिए here देखें।
ठीक है, एक उदाहरण के रूप, दूसरी अभिव्यक्ति इस्तेमाल किया जा सकता उपनाम को परिभाषित करने के लिए 'Foo = Bar' का उपयोग करके, जबकि पहला व्यक्ति नहीं कर सकता है। वैसे भी, पहले उदाहरण में आप एक मौजूदा नाम निर्यात कर रहे हैं, दूसरे में आप एक नया उपनाम बना रहे हैं। –
skypjack
पहला वाला एक [घोषणा का उपयोग करके] (http://en.cppreference.com/w/cpp/language/namespace#Using-declarations) जबकि दूसरा एक [नेमस्पेस उपनाम] है (http: //en.cppreference .com/डब्ल्यू/सीपीपी/भाषा/namespace_alias)। प्रश्न के शीर्षक के रूप में – crayzeewulf
@ क्रेज़ेज़ुल्फ़ प्रकार का उल्लेख करता है, मैं कहूंगा कि दूसरा एक [टाइप उपनाम] (http://en.cppreference.com/w/cpp/language/type_alias) एनएस उपनाम के बजाए है। – Christophe