【发布时间】:2012-02-23 19:57:14
【问题描述】:
我有
namespace src {
struct src_bar;
void src_baz();
template<class T> class src_qux;
}
我想引用为
namespace dst {
struct dst_bar;
void dst_baz();
template<class T> class dst_qux;
}
表示我想从src“重命名”或“别名”或“重新标记”名称。
对于dst_bar,当然可以使用namespace dst { typedef src_bar dst_bar; }。是否有一些(非宏)等效项允许我将 src::src_baz 重命名为 dst::dst_baz 和 src::src_qux 重命名为 dst::dst_qux?
除非我弄错了,using 语句和命名空间别名都不能完成另外两个。为dst_baz() 编写模板转发函数是可能的,但需要了解src_baz 的数量。模板类型定义可以有 dst_qux<T>::type 是 src_qux<T> 但间接增加了冗长。
FWIW,我的用例是使用 C 名称,例如 somepackage_someportion_somefuncA,并提供命名空间友好的版本 somepackage::someportion::somefuncA,以便其他人可以使用 using somepackage::someportion 以简洁起见。
【问题讨论】:
-
#define适合您吗?
标签: c++ namespaces using-declaration