namespace N { namespace M { enum E { zero = 0 }; }; }; using namespace N; int f(void) { return M::zero; } あるいは、 namespace N { namespace M { enum E { zero = 0 }; }; }; using namespace N::M; int f(void) { return zero; } なんじゃないのか? // Eのenum名指定なしでanonymous enumにしても同じ。