私はsrc
から「エイリアス」または「ラベル変更」の名前を「名前の変更」やしたいことを意味C++では、非名前空間、非クラス名の名前を変更/エイリアスできますか?
namespace dst {
struct dst_bar;
void dst_baz();
template<class T> class dst_qux;
}
として参照したい
namespace src {
struct src_bar;
void src_baz();
template<class T> class src_qux;
}
を持っています。
dst_bar
については、もちろんnamespace dst { typedef src_bar dst_bar; }
を使用することができます。 src::src_baz
の名前をdst::dst_baz
とsrc::src_qux
と変更することができます(マクロではない)同等品はdst::dst_qux
となりますか?
私が間違っていない限り、using
ステートメントも名前空間エイリアスも他の2つを達成できません。 dst_baz()
のテンプレート転送機能を書くことは可能ですが、src_baz
のアリティについての知識が必要です。テンプレートのtypedefはdst_qux<T>::type
をsrc_qux<T>
とすることができますが、間接指定は冗長性を追加します。
FWIW、私の使用例は、somepackage_someportion_somefuncA
のようなCの名前をとり、他の人々が簡潔にするためにusing somepackage::someportion
を採用できるように名前空間に対応したバージョンsomepackage::someportion::somefuncA
を提供しています。
'#define'は実行可能なオプションですか? – iammilind