C++ 嵌套命名空间别名可能吗?

标签 c++ namespaces

我正在重构以下代码:

namespace Foo
{
    namespace Bar { ...classes... }
}

Bar 现在正在移动到一个新的顶级命名空间,但我想保持 API 兼容性:

namespace Pi { ...classes... } // refactored Foo::Bar
namespace Foo { namespace Bar = Pi; } // API compatibility

这不起作用,因为它将 Foo::Bar::Class 别名为 Foo::Pi::Class,而不是 Pi::Class。有没有办法(缺少宏或对所有 Pi 进行类型定义)来实现我想要的?

最佳答案

如果我理解正确,这应该可以满足您的需求。这意味着在 Foo::Bar 中的任何查找都会在 ::Pi 中找到名称。

namespace Pi {}
namespace Foo { namespace Bar { using namespace Pi; } }

显然,这不会保持二进制兼容性。

关于C++ 嵌套命名空间别名可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9837327/

相关文章:

c++ - 编译错误

c++ - 关于 C++ 中的全局命名空间

c# - 在 C# 中使用带有默认命名空间的 Xpath

java - 使用命名空间的 jaxb 解码

html - 将节点的内容克隆到不同的命名空间

c++ - 我可以使用 placement new 添加到 vector 中吗

c++ - 为深度优先搜索定义 ColorMap 的最简单方法

c++ - QT,并发编程和向函数传递参数

c++ - 引用/值混淆有问题吗?

tsql - 如何使用 FOR XML PATH 避免子节点中的命名空间?