kann die automatische Eingabe von Abzügen möglicherweise einen Konvertierungsfehler verursachen?

9

Ich habe eine sehr einfache Parserregel (für AX), wie folgt:

%Vor%

Die letzte Zeile kompiliert und funktioniert wie erwartet in VC2010, gibt aber einen seltsamen Fehler in gcc 4.6:

%Vor%

Ich frage mich, ob es ein (bekannter) Fehler in gcc ist und ob es sogar möglich ist, mit auto declaration Conversion-Fehler zu bekommen. Sollte der abgeleitete Typ für auto nicht immer genau der gleiche Typ sein wie der Initialisierer?

AX überlädt Operator & Amp; so:

%Vor%

Ich konnte das Problem nicht auf einen kurzen Testfall reduzieren, leider kompiliert jedes Mal, wenn ich versuche, mit einem einfachen Beispiel zu kommen.

    
Gene Bushuyev 18.06.2011, 22:46
quelle

4 Antworten

3

auto ist nicht immer genau der Typ des Initialisierers, da auto Referenzen fallen lässt und T eingibt, wo Sie T& erwarten würden. Wenn Sie eine Referenz benötigen - spell auto& .

    
Violet Giraffe 27.11.2011 06:35
quelle
2

Bewerten Sie diese Antwort nicht, sie dient nur zu Informationszwecken

Dies war tatsächlich ein Fehler in früheren Versionen von gcc, der in gcc-4.7.0 behoben wurde.

    
Gene Bushuyev 18.05.2012 21:03
quelle
0

Das Problem ist in den Referenzen.

%Vor%

Das erste Template-Argument ist axe::r_and_t<axe::r_char_t<char>&, axe::r_char_t<char>&> für das erste und axe::r_and_t<axe::r_char_t<char>&, axe::r_char_t<char>&>& für das zweite. Dies ist ein Template-Argument, das nicht übereinstimmt - wahrscheinlich im Rückgabewert. Am wahrscheinlichsten tritt es auf, weil die SFINAE-Implementierung von Visual Studio bestenfalls zweifelhaft ist und keine zweiphasige Suche richtig implementiert, und es ist möglich, dass die GCC-Version Visual Studio eine andere Überladung auswählt.

    
Puppy 02.10.2011 11:29
quelle
0

Versuchen Sie, den Compiler bei seinem Wort mit dieser Version zu verwenden:

%Vor%

Was passiert?

Bearbeitet um hinzuzufügen: Ich habe gerade festgestellt, dass diese Frage drei Monate alt ist. Also nichts dagegen. Aber wurde es jemals gelöst?

    
TonyK 02.10.2011 16:36
quelle

Tags und Links