Я просто преподаю себе пространства имен С++ (исходя из фона С#), и я действительно начинаю думать, что даже со всеми вещами, которые С++ делает лучше, чем большинство других языков, вложенные пространства имен не являются одним из них!
Я правильно понимаю, что для объявления некоторых вложенных пространств имен я должен сделать следующее:
namespace tier1
{
namespace tier2
{
namespace tier3
{
/* then start your normal code nesting */
}
}
}
В отличие от:
namespace tier1::tier2::tier3
{
}
à la С#?
Это становится еще более сумасшедшим, когда мне нужно переслать объявление:
namespace tier1
{
namespace tier2
{
namespace forward_declared_namespace
{
myType myVar; // forward declare
}
namespace tier3
{
/* then start your normal code nesting */
class myClass
{
forward_declared_namespace::myType myMember;
}
}
}
}
Принимая во внимание, что типичная система, которую я разрабатываю, состоит из:
MyCompany::MySolution::MyProject::System::[PossibleSections]::Type
Вот почему вы не склонны часто использовать пространства имен в примерах на С++? Или обычно только одиночные (не вложенные) пространства имен?
UPDATE
Для всех, кого интересует, вот как я закончил работу, чтобы решить эту проблему.