4

SOに関する最近のスレッドがこれを引き起こしました

匿名の名前空間は、

  namespace unique { /* empty body */ } 
  using namespace unique; 
  namespace unique { namespace-body }

なぜそれが同等ではないのかについての正確な理由を思い出せません

  namespace unique { namespace-body } 
  using namespace unique;

また、検索(グーグルを含む)を試みましたが、無駄でした。この点に関してあなたが持っている情報を共有してください。

4

1 に答える 1

4

現在存在する仕様は、コーナー ケースを修正するために 1995 年にN0783で導入されました。その論文を引用するには(9ページ):

WP は、名前のない名前空間のセマンティクスを次のものと同等であると定義しています。

namespace UNIQUE {
    // namespace body
}
using namespace UNIQUE;

名前のない名前空間のコードは、コードが元の名前空間にあるか名前空間の拡張にあるかに依存するため、これは正しくありません。

namespace {} // If you remove this line, the
             // use of ::f below is invalid

namespace {
    void f()
    {
        using ::f;
    }
}

WP を変更して、名前のない名前空間を次と同等のものとして定義する必要があります。

namespace UNIQUE {}
using namespace UNIQUE;
namespace UNIQUE {
    // namespace body
}
于 2010-09-09T04:02:29.963 に答える