メモの日々


2016年11月14日(月) [長年日記]

[c++] C++で名前空間内シンボルへのアクセスを短く書く

今更だけど、C++で名前空間の記述を短く書く方法をいつも調べ直しているのでここにメモ。名前空間の別名定義にusingを使わない所が覚えにくい。

namespace a {
  namespace b {
    int f() { return 1; }
  }
}

int main() {
  int i = 0;
  i += a::b::f();
  {
    // 名前空間に対するusing
    using namespace a::b;
    i += f();
  }
  {
    // 名前空間内のシンボルに対するusing
    using a::b::f;
    i += f();
  }
  {
    // 名前空間に別名をつける
    namespace ab = a::b;
    i += ab::f();
  }
  return i;
}