namespaceのエイリアスでちょっと気をつけること
コードを書いていて少し詰まった
#include <iostream> namespace A { namespace B { void f() { std::cout << "called f" << std::endl; } } void g() { //何かしらの処理 } }
こんなコードを書き、gはA::gとして呼び出したいが、fはB::fとして呼び出したい、みたいな事になった。
こういうときusing namespace A;はダメだ、using namespace A::B;も使えない。
そこでこんな2つのコードを書いた。
using B = A::B; using namespace B = A::B;
しかしこれはコンパイルエラーになる。どうやらusingでのエイリアスはnamespaceに対してはできないらしい。
ではnamespaceをエイリアスするにはどうすればいいかというと
namespace B = A::B;
のようにすれば良い。
しかしこれはどうもわかりにくい気がするなといった次第。