無名の名前空間のこれらのネストされた2つの用法の間の機能の違いはあります:ネスト無名の名前空間
namespace A { namespace {
void foo() {/*...*/}
}}
と
namespace { namespace A {
void foo() {/*...*/}
}}}
限り、私はそれを見るように、両方のfoo
sが内部ユニークを取得しますコンパイル単位あたりの識別子はA::foo
でアクセスできますが、私が見ていないような微妙な違いはありませんか?
(編集済み)ファイルレベルで別の 'A :: foo'を宣言することで、2番目の' foo'を効果的に隠すことができます。最初の 'foo'は' :: A :: foo'として常にアクセス可能です。あなたが 'A'を再び開き、別の' foo'をそこに宣言しない限り。つまり、はい、ほとんど同じです。 –