Когда возникает система классов, констант, функций, возможно глобальных переменных и объектов, которая описывает сущности одной задачи или набора связанных задач и создаёт инструменты для их решения, для каких-либо действий с этими сущностями.
Например, пространство имён, содержащее классы описания сокетов, IP-адресов, соединений, функции для создания соединения, принятия входящего запроса, отправки и принятия данных. Или другой пример: набор разных алгоритмов для работы с матрицами, определение типа "матрица" и "вектор" как стандартного или пользовательского с помощью using/typedef.