C++で同じusing
エイリアスを複数回宣言することは合法ですか?私は1つのヘッダファイルが 'public'として使われているテンプレートライブラリを持っています。テンプレートクラスの宣言とエイリアス、そして '実装'ファイルがあります(文字通りではありません。パブリックヘッダーファイルには、その最後にすべての実装ヘッダーが含まれます。C++では 'using'エイリアスの複数の定義があります
実装ファイルからパブリックヘッダを含めることはできません。これは、循環依存性を引き起こす可能性があるためです。しかし、実装ファイルの中でヘッダファイルに宣言されているテンプレートエイリアスを使用したい。
例:
「国民ヘッダー:
using true_type = logical_constant<true>;
using false_type = logical_constant<false>;
のプライベート "実装ファイル:
使用して別名の別名の両方限りusing true_type = logical_constant<true>;
using false_type = logical_constant<false>;
同じこと、これは合法ですか?このシンプルな例は私にとってMSVC 14で働いていましたが、同じように複雑なエイリアスを使用しようとしたとき、コンパイラは不平を言っていました。
コンパイラが提供する「より複雑なエイリアス」と正確な苦情の例を挙げることができますか? – kdelaney
実際の問題コードの[mcve]を入力してください。 – Barry