もうね、関数内でも名前空間を定義できるようにしたら万事解決だよ。
int g(int n)
{
  namespace n1
  {
    int x = f(n);
    namespace n2
    {
      int x = f(n1::x);
      namespace n3
      {
        int x = f(n1::n2::x); //C++的名前空間ならn2::xでもいけると思う
        return x;
      }
    }
  }
}
俺はこんなの欲しくないけど。