у меня
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
. Шаблон typedefs может иметь dst_qux<T>::type
быть src_qux<T>
, но косвенность добавляет многословие.
FWIW, мой вариант использования берет имена C, такие как somepackage_someportion_somefuncA
, и предоставляет удобную для пространства имен версию somepackage::someportion::somefuncA
, чтобы другие люди могли использовать using somepackage::someportion
для краткости.