在命名空间'names'中:::std::与std::有何区别?

3
我浏览了一些Stackoverflow上的帖子,注意到大多数人使用std :: ,但有些人使用 ::std :: 我认为我以前读到过关于在命名空间中使用 ::std :: 的原因是全局范围或类似的内容(但现在找不到了,因为它是在一个不相关的问题的评论中)
有没有理由更喜欢一种方法而不是另一种方法?
1个回答

5

以下的代码并不推荐使用,但你理论上是可以这么写的:

namespace foo {
    namespace std {
        int bar;
    }
    std::string s;
}

在这种情况下,std::string 指的是 ::foo::std 命名空间,而不是 ::std 命名空间。因此,使用 ::std::string 只是更加明确和谨慎地避免了歧义。

1
那么,一般情况下,使用std::是正确的选择,对吗? - José D.
2
通常情况下,我会使用 std:: 而不是 ::std:: - Greg Hewgill

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接