【问题标题】:Is it ok to do namespace ranges = std::ranges;可以做命名空间范围 = std::ranges;
【发布时间】:2021-02-17 09:03:14
【问题描述】:

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

namespace ranges = std::ranges; 写在项目的最顶部标题中是否是一种好习惯?

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

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

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

【问题讨论】:

  • 每个问题只问一个问题。 #3 的答案是here。 #2 是因为 all C++ 标准库位于命名空间 std。唯一的例外是 C legacy 和宏。

标签: c++ c++20


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-10
    相关资源
    最近更新 更多