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