C++11にはインラインネームスペースという機能があります。インラインネームスペース内は透過的にアクセスすることが可能です。
inline namespace name {
void foo();
}
この場合fooはname::foo();でもfoo();でも呼び出せます。
そんなinline namespace。gccでも実装されているのですが、同名のinline namespaceとnamespaceを作るとどちらもinline namespaceとして扱われてしまうというバグが存在しています。
namespace name {
void func1() {}
}
inline namespace name {
void func2() {}
}
上記のように同じ名前空間をinline namespace/namespace両方でで宣言すると、どちらに含まれる識別子も名前修飾なしで透過的にアクセスできてしまいます。
そもそも同名名前空間のinlineと非インラインの混在がダメなような気がしますが、それができて、その通り機能してくれたらライブラリ屋さん的には便利かも?と思います。