Ist das ein Visual Studio 2013 Update 4 C ++ - Optimierer Fehler oder ist mein Code falsch?

8

Ich habe Abstürze in unserer Software gesehen, seit ich auf 1.58 und VS2013 aktualisiert habe. Nur wenn die Compiler-Optimierung aktiviert ist, sehen wir, dass es abstürzt. Mit Boost 1.55 gibt es keine Abstürze. Es ist mir gelungen, das Problem, das ich sehe, in boost::any_range zu isolieren und wie wir es verwenden.

Siehe den folgenden Beispielcode:

%Vor%

Unten ist die Programmausgabe. Die Ausgabe der DEBUG-Version ist, was ich erwarte, aber die optimierte RELEASE-Version ist für mich im Moment ein Geheimnis ...

%Vor%

Vielleicht ist mein Code falsch oder ist es wirklich ein Fehler im Optimierer? Irgendwelche Tipps würden sehr geschätzt!

    
Jormungand999 14.07.2015, 09:30
quelle

1 Antwort

11

Das ist Boost Bug 10493 (eingeführt in Boost 1.56), weshalb dein Code mit Boost funktioniert 1.55).

Die Problemumgehung besteht in der Verwendung von T const als Template-Parameter Reference , in Ihrem Fall:

%Vor%

Beispiel .

    
ecatmur 14.07.2015, 11:13
quelle

Tags und Links