は、このコードを考えてみましょう:コンパイラの不一致:エイリアス解像度と名のルックアップの間の相互作用
using type = long;
namespace n {
using type = long;
}
using namespace n;
int main() {
type t;
}
これはClang 3.7とGCC 5.3にきれいにコンパイルしますが、MSVC 19 *は、次のエラーメッセージを表示します。
main.cpp(9): error C2872: 'type': ambiguous symbol
main.cpp(1): note: could be 'long type'
main.cpp(4): note: or 'n::type'
はこれですコードは整形式ですか?曖昧さチェックの前にエイリアスが解決されるかどうかは、標準のどの部分に記載されていますか?あなたはそれらのエイリアスのいずれかを変更した場合クランとGCCは両方MSVCに同様のエラーを与えること
注意。
名前の修飾がどのようにあいまいさを解決するのかを十分に理解していますが、私は標準がこれについて言いたいことに興味があります。
* - パーマリンクとオンラインMSVCコンパイラ
あなたは本当ですか? – Columbo
@Columbo、私はあなたの前に私の答えを掲載しました。私は自分でそれを取り除くだろうが、私は今それを残すだろう - それを誰でもやったのは間違っていた。 – SergeyA