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

Jos*_* D. 3 c++ namespaces std namespace-organisation

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

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

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

Gre*_*ill 5

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

namespace foo {
    namespace std {
        int bar;
    }
    std::string s;
}
Run Code Online (Sandbox Code Playgroud)

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

  • 通常,是的,我会使用`std ::`而不是`:: std ::`. (2认同)