インラインネームスペース


概要

親のネームスペースに対して子のネームスペースを直接参照できるようにする機能である。 インラインネームスペースは主にライブラリのバージョン管理を簡単化させる効果を持つ。 以下のような構文を用いて定義する。

inline namespace 名前 {...};

例えば、ライブラリの最新バージョンのみをあるネームスペースに公開し、最新以外のバージョンは明示的に記述させる場合は以下のように使用する。

namespace X {
    inline namespace v2 {
        void f();
    };
    namespace v1 {
        void f();
    };
};

int main() {
    X::f();     //X::v2::f
    X::v1::f(); //X::v1::f
    X::v2::f(); //X::v2::f

    return 0;
}

results matching ""

    No results matching ""