読者です 読者をやめる 読者になる 読者になる

進捗置き場というわけでもない場所

プログラミングしてる中で見つけたこととか

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;

のようにすれば良い。
しかしこれはどうもわかりにくい気がするなといった次第。