একটি পরিস্থিতি কল্পনা করুন, একই ক্লাসে পিয়ূষ (Piyush) নামে দুজন বয়স্ক আছে। যখনই আমাদের তাদের আলাদা করতে হবে, অবশ্যই তাদের নামের সাথে কিছু অতিরিক্ত তথ্য ব্যবহার করতে হবে, যেমন এলাকা (যদি তারা ভিন্ন এলাকায় বাস করে) বা তাদের মা বা বাবার নাম, ইত্যাদি।
একই পরিস্থিতি আপনার C++ অ্যাপ্লিকেশনেও তৈরি হতে পারে। উদাহরণস্বরূপ, আপনি কিছু কোড লিখছেন যাতে xyz() নামে একটি ফাংশন আছে এবং আরেকটি লাইব্রেরি আছে যাতে একই নামের xyz() ফাংশন আছে। এখন কম্পাইলারের কোনো উপায় নেই জানার যে আপনি আপনার কোডের ভিতরে কোন ভার্শনের xyz() ফাংশন রেফার করছেন।
নেমস্পেস (namespace) এই সমস্যা সমাধানের জন্য ডিজাইন করা হয়েছে এবং একই নামে উপলব্ধ সাদৃশ্য ফাংশন, ক্লাস, ভেরিয়েবল ইত্যাদি আলাদা করার জন্য অতিরিক্ত তথ্য হিসেবে ব্যবহার করা হয়। নেমস্পেস ব্যবহার করে, আপনি নির্ধারণ করতে পারেন কোন কন্টেক্সটে নামগুলো ডিফাইন করা হয়েছে। সারসংক্ষেপে, একটি নেমস্পেস একটি স্কোপ ডিফাইন করে।
C++-এর একটি স্ট্যান্ডার্ড লাইব্রেরি আছে যা আপনার অ্যাপ্লিকেশন তৈরি করতে ব্যবহৃত সাধারণ ফাংশনালিটি ধারণ করে, যেমন কন্টেইনার, অ্যালগরিদম, ইত্যাদি। যদি এই লাইব্রেরি দ্বারা ব্যবহৃত নামগুলো গ্লোবালি খোলা থাকত, উদাহরণস্বরূপ, যদি তারা একটি queue ক্লাস গ্লোবালি ডিফাইন করত, তবে আপনি কখনো একই নাম ব্যবহার করতে পারতেন না tanpa কনফ্লিক্ট। তাই তারা একটি নেমস্পেস, std তৈরি করেছেন যা এই পরিবর্তনগুলোকে ধারণ করে।
using namespace স্টেটমেন্টের অর্থ হলো, যেস্কোপে এটি উপস্থিত, সেখানে std নেমস্পেসের অধীনে থাকা সব কিছু std:: প্রিফিক্স না লিখেই উপলব্ধ করাও।
যদিও এই অভ্যাস ছোট উদাহরণ কোড বা তुच্ছ প্রোগ্রামের জন্য ঠিক আছে, পুরো std নেমস্পেসকে গ্লোবাল নেমস্পেসে টানিয়ে আনা ভালো অভ্যাস নয় কারণ এটি নেমস্পেসের উদ্দেশ্যই বাতিল করে দেয় এবং নামের সংঘর্ষ (name collisions) করতে পারে। (যদি শুরুতে কোনো নামের সংঘর্ষ নাও থাকে, তবে রক্ষণাবেক্ষণে আরও কোড, লাইব্রেরি ইত্যাদি যোগ হলে সেগুলো উদ্ভূত হতে পারে।) এই পরিস্থিতিকে সাধারণত নেমস্পেস পলিউশন (namespace pollution) বলা হয়।