एक ऐसी स्थिति पर विचार करें, जब एक ही कक्षा में एक ही नाम के दो व्यक्ति हों, पीयूष। जब भी हमें उन्हें अलग करने की आवश्यकता होती है, तो निश्चित रूप से हमें उनके नाम के साथ कुछ अतिरिक्त जानकारी का उपयोग करना होगा, जैसे कि या तो क्षेत्र, यदि वे एक अलग क्षेत्र में रहते हैं या उनके माता या पिता का नाम, आदि।
आपके C++ अनुप्रयोगों में भी यही स्थिति उत्पन्न हो सकती है। उदाहरण के लिए, आप कुछ कोड लिख रहे होंगे जिसमें xyz() नामक एक फ़ंक्शन है और एक अन्य लाइब्रेरी उपलब्ध है जिसमें समान फ़ंक्शन xyz() भी है। अब कंपाइलर के पास यह जानने का कोई तरीका नहीं है कि आप अपने कोड में xyz() फ़ंक्शन के किस संस्करण का उल्लेख कर रहे हैं।
एक नाम स्थान इस कठिनाई को दूर करने के लिए डिज़ाइन किया गया है और विभिन्न पुस्तकालयों में उपलब्ध समान नाम के साथ समान कार्यों, वर्गों, चर आदि को अलग करने के लिए अतिरिक्त जानकारी के रूप में उपयोग किया जाता है। नाम स्थान का उपयोग करके, आप उस संदर्भ को परिभाषित कर सकते हैं जिसमें नाम परिभाषित किए गए हैं। संक्षेप में, एक नाम स्थान एक दायरे को परिभाषित करता है।
C++ में एक मानक पुस्तकालय है जिसमें कंटेनर, एल्गोरिदम, आदि जैसे आपके अनुप्रयोगों के निर्माण में आपके द्वारा उपयोग की जाने वाली सामान्य कार्यक्षमता शामिल है। यदि इनके द्वारा उपयोग किए गए नाम खुले में थे, उदाहरण के लिए, यदि उन्होंने विश्व स्तर पर एक कतार वर्ग को परिभाषित किया है , आप बिना किसी विरोध के फिर से उसी नाम का उपयोग नहीं कर पाएंगे। इसलिए उन्होंने इस परिवर्तन को शामिल करने के लिए एक नामस्थान, एसटीडी बनाया।
इस्तेमाल करने वाले नेमस्पेस स्टेटमेंट का मतलब है कि जिस दायरे में यह मौजूद है, उसमें से प्रत्येक के पहले std::उपसर्ग किए बिना सभी चीजें उपलब्ध कराएं।
हालांकि यह अभ्यास संक्षिप्त उदाहरण कोड या तुच्छ कार्यक्रमों के लिए ठीक है, वैश्विक नामस्थान में संपूर्ण एसटीडी नाम स्थान खींचना एक अच्छी आदत नहीं है क्योंकि यह नाम स्थान के उद्देश्य को हरा देता है और नाम टकराव का कारण बन सकता है। (भले ही शुरू में कोई नाम टकराव न हो, वे रखरखाव के दौरान क्रॉप हो सकते हैं क्योंकि प्रोजेक्ट में अधिक कोड, लाइब्रेरी आदि जोड़े जाते हैं।) इस स्थिति को आमतौर पर नेमस्पेस प्रदूषण के रूप में जाना जाता है।