Решил тут использовать неймспейс details, как в бусте. Пишу на BCB 6. Обнаружился неожиданный (впрочем от bcb можно всего ожидать) глюк:
namespace x
{
namespace details
{
class A { void p(); };
}
class B { void p(); };
}
namespace y
{
namespace z
{
//namespace details {} // Откомментируй, и глюк исчезнет.
using namespace x;
namespace details // Ситает что это 'x::details' :)
{
void A::p() {}
} // Раз уж мы были в 'x::details', то из него и выходим.
// И где же мы оказываемся?
void B::p() {} // Правильно, в неймспейсе 'x' :)))
} // Аналогино выходим из неймспейса 'x' и
// оказываемся в глобальном неймспейсе.
} // И, внимние, тишина в студии, выход из
// глобального неймспейса при помощи
// internal compiler error!!!
А если неймспейс 'y' убрать, то все даже откомпилируется
. Так вот.