Можно ли сделать пространство имен другом класса, скажем, у меня есть пространство имен модульного теста со многими классами, и я хотел, чтобы пространство имен теста было другом класса, чтобы иметь доступ к частным деталям реализации.
Нет, это невозможно в C ++. Честно говоря, это пахнет плохим дизайном.
Если вы используете .NET, вы можете взглянуть на атрибут InternalsVisibleTo . В любом случае, обратите внимание, что это работает для целых сборок, а не для отдельных пространств имен.