Problem mit Begrenzungen beim Überprüfen eines Members std :: array in einer const-Funktion

8

Ich bekomme seltsame Verhaltensgrenzen, indem ich ein Member std :: array mit mingw (gcc 4.7.0) mit dem folgenden Code überprüfe

%Vor%

Ausgabe ist

%Vor%

Der Fehler scheint mit der Optimierung zu tun zu haben, da er nur auftritt, wenn er mit -O kompiliert wurde. Ich habe die einzelnen Flags ausprobiert, die von -O aktiviert wurden, konnte sie aber nicht weiter eingrenzen. Wenn die Funktion nicht-const ist, wird das Problem ebenfalls behoben. Könnte das ein Fehler sein oder fehle ich etwas?

* Bearbeiten

Eingeschränkt, sieht aus wie ein Fehler in der const Version von .at()

%Vor%

Gleiche Ausgabe wie oben, kompiliert mit -std=c++11 -O unter Verwendung von mingw 4.7.0 unter Windows XP sp3 und Windows 7 sp1.

* 2 bearbeiten

Gleiche Ausgabe wieder

%Vor%     
user657267 27.08.2012, 04:52
quelle

1 Antwort

5

Dies ist Teil des Array-Headers

%Vor%

Undef __EXCEPTIONS in der Hauptdatei (oder #ifdef in #ifndef im Array ändern) führt zur korrekten Ausgabe. Ich weiß nicht, das ist die richtige Lösung oder nicht, aber es funktioniert.

UPD: Ich ändere den Code in der Kopfzeile meines Arrays zu

%Vor%

Jetzt funktioniert alles korrekt

    
soon 27.08.2012, 06:02
quelle

Tags und Links