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()
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%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