у меня есть
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
вариант? - person iammilind   schedule 01.02.2012