如何扩展分配的命名空间

How to extend an assigned namespace

我想通过一个实例来解释我的问题。我正在使用第三方库,它有自己的命名空间。我想导入这个库的一部分,在下面提到的命名空间中有自己的命名空间。

namespace library {
  namespace part {
  }
}

当前项目中也存在层次结构。我想使用另一个名称将 library::part 导入并扩展到我的项目中。我尝试如下操作:

#include <library/part>

namespace project {
  namespace my_part = library::part;
}

namespace project {
  namespace my_part {
    void my_extension_1();
    void my_extension_2();
  }
}

场景可以用当前语言的工具完成吗?如果没有,应该如何解决?还是不行,为什么?

编辑: 错误消息 gcc 5.3.0 转储:

error: conflicting declaration of namespace ‘project::my_part’

编辑: 有一个关于扩展原始命名空间的建议,但这是我要求的。 library::part 用户不应该直接访问我添加的功能。

我相信你想创建一个你自己的命名空间,其中包含 library::part 包含的所有内容,除此之外,没有 将更多内容放入 library::part。像这样?

namespace library {
    namespace part {
        const int library_part_i = 123;
    }
}

namespace project {
    namespace part {
        using namespace library::part;
        void my_extension_1(){};
        void my_extension_2(){};
    }
}

int main()
{
    // const int i = library_part_i;    <- Does not compile
    // const int i = project::library_part_i; <- Does not compile
    const int i = project::part::library_part_i;
    // library::part::my_extension_1();  <- Does not compile
    project::part::my_extension_2();
    return 0;
}