首页 > 解决方案 > 可以做命名空间范围 = std::ranges;

问题描述

自 C++20 以来,似乎 std::ranges:: 几乎可以完成 std​​:: 可以做的所有事情(查看范围算法)。

namespace ranges = std::ranges;只写在一个项目的最上面的标题是一个好习惯吗?

例如,已经为视图创建了命名空间别名:

namespace std {
    namespace views = ranges::views;
}

编辑@StoryTeller - Unslander Monica:一个问题

标签: c++c++20

解决方案


我们不想用第二个命名空间污染全局空间。

  1. 开发库时,您可以在 MyLib 命名空间内执行此操作,以免造成污染 => 这很方便,因为您可以在 MyLib 范围内简单地使用 range:: ,无论是头文件还是源文件。
  2. 在开发一个简单的项目时,您可以在“define.hpp”文件中执行此操作,因为由您决定 range:: 的含义(如果您已经有一个 range 类,该标准保护您使用别名或不遵循它的权利例如)。

所以是的,只要你的 API 不污染一个人的全局范围就可以了。


推荐阅读