C++ มี Standard Library ที่มีฟังก์ชันทั่วไปที่คุณใช้ในการสร้างแอปพลิเคชัน เช่น Containers, Algorithms ฯลฎ ถ้าชื่อที่ใช้โดยพวกมันอยู่ใน Global Scope (ขอบเขตทั่วไป) เช่น ถ้าพวกมันกำหนด Queue Class แบบ Global คุณจะไม่มีทางใช้ชื่อเดียวกันอีกโดยไม่มี Conflict (ความขัดแย้ง) ดังนั้นพวกเขาจึงสร้าง Namespace ชื่อ std ไว้เพื่อเก็บการเปลี่ยนแปลงนี้
คำสั่ง using namespace เพียงแค่หมายถึงว่า ใน Scope ที่มันอยู่ ให้ทำให้ทุกอย่างภายใต้ Namespace std ใช้งานได้โดยไม่ต้องเติม std:: นำหน้าทุกครั้ง
แม้การปฏิบัตินี้จะถือว่าถูกต้องสำหรับโค้ดตัวอย่าง แต่การดึง Namespace std ทั้งหมดเข้าสู่ Global Namespace ไม่ดี เพราะมันทำลายจุดประสงค์ของ Namespace และอาจนำไปสู่ Name Collisions (ชื่อชนกัน) สถานการณ์นี้เรียกว่า Namespace Pollution (มลพิษของ Namespace)