名称空间包含在库中还是库包含在名称空间中?C++标准库中有多少个名称空间?
它们是正交的。一个库可以使用多个命名空间,并且一个命名空间可以在多个库之间拆分。然而,最好将库的内容范围限定为该库特定的(通常是单个(命名空间(+嵌套在其中的命名空间(,以避免多个库之间的名称冲突并保持清晰。
标准库仅使用(除了全局名称空间范围之外(std
名称空间(+嵌套名称空间(,尽管命名为std
并后跟任意数字的名称空间和名称空间posix
也保留给标准库以供将来标准化。标准库在std
中也有多个嵌套的名称空间,例如std::filesystem
和std::ranges
,并且在全局名称空间范围中为其保留了某些名称。
标准库还明确允许用户代码(包括用户库(向std
命名空间添加某些声明(特别是某些类的部分专用化(。因此std
也不总是完全局限于标准库。