Answer
Namespaces partition names by module/library/component, preventing collisions, communicating ownership and structure, and allowing a 'detail' sub-namespace for internal helpers not meant for public use. Combined with headers and build structure, they make large projects navigable and reduce coupling between components.
namespace app::net::detail { /* internal helpers */ }Real-world example Public APIs live in app::net while implementation helpers are hidden in app::net::detail.