命名空间'names'::: std :: vs std ::

时间:2013-08-31 04:54:58

标签: c++ namespaces std namespace-organisation

我一直在查看Stackoverflow上的一些帖子,我注意到大多数人使用std::但有些人使用::std::

我想我已经阅读了一些关于全局范围或类似命名空间的内容作为使用::std::的原因(但我现在找不到它,因为它在评论一个不相关的问题)

有没有理由偏爱一种方式而不是另一种方式?

1 个答案:

答案 0 :(得分:5)

编写这样的代码是个坏主意,但可以

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

在这种情况下,std::string引用::foo::std命名空间,而不是::std命名空间。因此,使用::std::string只需要更加明确谨慎。