【问题标题】:Adding a new member (even a whole namespace) to an already existing namespace alias将新成员(甚至整个命名空间)添加到已经存在的命名空间别名
【发布时间】:2021-08-16 15:50:25
【问题描述】:

library 成为来自外部源(例如共享库)的命名空间。让global 成为使用该外部源的项目的全局命名空间。

通过使用

namepace global
{
    namespace external = library;
}

现在可以通过访问global::external 来使用library 命名空间。现在将other_library(与library 没有冲突)成像为来自第二个外部源的命名空间。是否可以将other_library 添加到别名external 以便可以通过global::external 访问来自两个外部源的功能?

原因:通过隐藏底层命名空间并将它们分组为不同的、自定义的 API 友好方式,提供对不同资源的统一访问。

【问题讨论】:

标签: c++ namespaces alias


【解决方案1】:

这应该可以解决问题

namespace global
{
    namespace external{
        using namespace library;
        using namespace other_library;
    }
}

免责声明:我不能 100% 确定使用 using 解包命名空间等同于命名空间别名,尤其是在函数重载和 ADL 的非常黑暗的角落。

【讨论】:

  • 它也可能没有追溯力,即不会对后面包含的内容采取行动。不过,我使用了这个技巧,将 boost 或 std 类(无论包含哪个标头)合并到单个自定义命名空间中
猜你喜欢
  • 2023-04-04
  • 1970-01-01
  • 1970-01-01
  • 2013-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多