5

違いは何ですか:

namespace A
{
    inline namespace B
    {
        ...
    }

    ...
}

...

namespace A
{
    namespace B
    {
        ...
    }

    using namespace B;

    ...
}

...

つまり、インライン名前空間と、外側の名前空間に using ディレクティブが配置された非インライン名前空間の違いは何ですか?

4

1 に答える 1

2

C++11 7.3.1p8 からの言い換え:

  • インライン名前空間とそれを囲む名前空間は、いずれかが追加されるたびに、引数依存のルックアップで使用される関連する名前空間のセットに両方とも追加されます。

  • インライン名前空間の各メンバーは、後で明示的にインスタンス化するか、囲んでいる名前空間のメンバーであるかのように明示的に特殊化できます。

  • 明示的な修飾によって囲んでいる名前空間で名前を検索すると、囲んでいる名前空間にその名前の宣言がある場合でも、using ディレクティブによって取り込まれたインライン名前空間のメンバーが含まれます。

于 2013-07-20T04:51:46.810 に答える