I have
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
的元数。模板typedef可以使dst_qux<T>::type
成为src_qux<T>
,但这种间接方式增加了冗余。
值得注意的是,我的用例是接受类似于somepackage_someportion_somefuncA
的C名称,并提供适用于命名空间的版本somepackage::someportion::somefuncA
,以便其他人可以使用using somepackage::someportion
进行简洁。