Betrachten Sie diesen Code:Compiler Diskrepanz: Die Interaktion zwischen Alias-Auflösung und Namen-Suche
using type = long;
namespace n {
using type = long;
}
using namespace n;
int main() {
type t;
}
Dies kompiliert sauber auf Clang 3.7 und GCC 5.3, aber MSVC 19 * gibt die folgende Fehlermeldung:
main.cpp(9): error C2872: 'type': ambiguous symbol
main.cpp(1): note: could be 'long type'
main.cpp(4): note: or 'n::type'
Ist das gut formatiert? Welcher Teil des Standards notiert, ob der Alias vor der Mehrdeutigkeitsprüfung aufgelöst wird?
Beachten Sie, dass Clang und GCC beide ähnliche Fehler zu MSVC geben, wenn Sie einen dieser Aliase ändern.
Ich bin mir voll bewusst, wie qualifiziert der Name die Mehrdeutigkeit lösen würde, ich bin nur daran interessiert, was der Standard dazu sagen muss.
* - einfach den Code einfügen und zu diesem Link laufen, ich weiß nicht, ob es mit Permalinks
ein Online-MSVC Compiler ist
Meinst du das ernst? – Columbo
@Columbo, ich habe meine Antwort gepostet, bevor ich deine gesehen habe. Ich würde es selbst entfernen, aber ich werde es jetzt verlassen - es war falsch, wer auch immer es getan hat. – SergeyA