"using namespace" in header in namespace

"using namespace" in header in namspace

我知道之前有人问过一个非常相似的问题,"using namespace" in c++ headers,但我的问题是在命名空间内部。

namespace foo {
    using namespace std; // what does this do?

    class Bar { ... }
}

这是否与另一个问题所说的完全相同,只是在所有地方都包含 using 语句?它只在该名称空间中执行吗?它只在header吗?

有两个区别:

  1. 是的,using 仅适用于 foo 命名空间内的代码。但这意味着所有 foo 代码都看到这个 header,所以你可能仍然不想这样做。
  2. 如果命名空间 foo::std 存在,嵌套的 using 语句将优先于 ::std