কোড সংগঠিত করার একটি গুরুত্বপূর্ণ পদ্ধতি হলো নেমস্পেস। দুটি ফাংশনের নাম একই হয়ে যেতে পারে, অর্থাৎ তাদের মধ্যে নামের সংঘর্ষ হতে পারে; সেই ফাংশনগুলোকে আলাদা আলাদা নেমস্পেসে রেখে এই সংঘর্ষ সমাধান করা যায়। নেমস্পেস নেস্টেড করা যায়, যা বড় কোডবেস গঠন করতে সাহায্য করতে পারে। নেমস্পেসগুলোতে অ্যাক্সেস করা হয় স্কোপ-রেজোলিউশন অপারেটর :: দিয়ে।
নিচের উদাহরণে দুটি ভিন্ন foo ফাংশনের ব্যবহার দেখানো হয়েছে। নিজ নিজ নেমস্পেস প্রিফিক্স করে এগুলোকে একসাথে ব্যবহার করা হয়েছে।
namespace my_ns {
int foo() {
return 44;
}
namespace my_inner_ns {
int baz() {
return 90;
}
}
}
namespace my_other_ns {
int foo() {
return -2;
}
}
int myresult{my_ns::foo() + my_other_ns::foo() * my_ns::my_inner_ns::baz()};
অনেক বেশি নেস্টেড নেমস্পেস পড়তে গেলে খুব লম্বা ও জটিল হয়ে যেতে পারে। using দিয়ে নেমস্পেস ইমপোর্ট করে এই লম্বাভাব দূর করা সম্ভব। এতে সব নাম গ্লোবাল নেমস্পেসে চলে আসে। কিছুটা পার্থক্য ধরে রাখতে অ্যালিয়াস কাজে লাগতে পারে।
int my_other_result{my_ns::my_inner_ns::baz()};
using namespace my_ns::my_inner_ns; // importing the complete namespace
int also_other_result{baz()};
namespace m = my_ns; // setting an alias
namespace o = my_other_ns;
int also_my_result{m::foo() + o::foo() * m::my_inner_ns::baz()};