在命名空间"名称"上: ::标准:: vs 标准::

On namespace 'names': ::std:: vs std::

本文关键字:标准 vs 名称 命名空间      更新时间:2023-10-16

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

我想我已经读过一些关于全局作用域或命名空间中类似的东西作为使用::std::的原因(但我现在找不到它,因为它在一个无关问题的注释中)

有什么理由选择其中一种方式而不是另一种方式吗?

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

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

在这种情况下,std::string指的是::foo::std名称空间,而不是::std名称空间。因此,使用::std::string只是更加明确地小心一点。