Mehrdeutiger Fehler mit char * und char [N]

8

Kann jemand mir helfen zu verstehen, ist das richtige Verhalten oder nicht.

Betrachten Sie dieses Beispiel:

%Vor%

Mit gcc 4.7.3 kompiliert es einfach und gibt '0' wie erwartet aus.

Aber mit dem Visual Studio-Compiler wird ein ambiguous error (C2593) gemeldet.

Wer hat Recht in dieser Situation und was sagt standard dazu?

Danke.

    
Tony 23.12.2013, 16:14
quelle

2 Antworten

4

Mit ziemlich neuen Versionen (dh den letzten Leitern der Entwicklungszweige) von gcc und clang zeigt ebenfalls eine Mehrdeutigkeit. Ich hätte gedacht, dass die Überladung, die ein Array nimmt, besser ist, aber es scheint, dass der Code mehrdeutig ist. Ich habe jedoch die relevanten Klauseln im Standard noch nicht aufgespürt.

    
Dietmar Kühl 23.12.2013, 16:23
quelle
1

Wie ich verstehe, funktioniert das einfache Überladen in neuen Versionen von gcc nicht und funktioniert bereits in VC10 nicht.

Wenn also jemand sich wundert, wie man dieses Problem beheben kann, ist eine Lösung:

%Vor%

Kompiliert mit VC10, gcc-4.6.3 und gcc-4.8.1. Scheint korrekt zu funktionieren.

    
Tony 24.12.2013 09:13
quelle

Tags und Links