ADL की वजह से अलग-अलग शब्दार्थों को मजबूत करना, मुझे आम तौर पर कैसे उपयोग करना चाहिए using
, और क्यों? क्या यह स्थिति-निर्भर (जैसे हेडर जो #include
d बनाम सोर्स फाइल होगा जो नहीं होगा)?
इसके अलावा, मुझे पसंद करना चाहिए ::std::
या std::
?
नाम स्थान-स्तर
using namespace
:using namespace std; pair<string::const_iterator, string::const_iterator> f(const string &s) { return make_pair(s.begin(), s.end()); }
पूरी तरह से स्पष्ट होना:
std::pair<std::string::const_iterator, std::string::const_iterator> f(const std::string &s) { return std::make_pair(s.begin(), s.end()); }
नाम-स्तर का उपयोग-घोषणाएँ:
using std::pair; using std::string; pair<string::const_iterator, string::const_iterator> f(const string &s) { return make_pair(s.begin(), s.end()); }
समारोह-स्थानीय उपयोग-घोषणाएँ:
std::pair<std::string::const_iterator, std::string::const_iterator> f(const std::string &s) { using std::make_pair; return make_pair(s.begin(), s.end()); }
समारोह-स्थानीय
using namespace
:std::pair<std::string::const_iterator, std::string::const_iterator> f(const std::string &s) { using namespace std; return make_pair(s.begin(), s.end()); }
कुछ और?
यह पूर्व-सी ++ 14 मान रहा है, और इस प्रकार कोई रिटर्न-प्रकार-कटौती का उपयोग नहीं कर रहा है auto
।
::std::
बनाम के बारे में सोच रहा था std::
।
std
हालांकि दूसरे के बिना उपयोग कर रहा हूँ । कोई व्यक्ति एक std नाम स्थान को परिभाषित करने के लिए मुसीबत पूछ रहा है (और शायद इसका फायदा उठाने के लिए खोज कर रहा है जो कि ज्यादातर लोग उपयोग कर रहे हैं std
और नहीं ::std
)।