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!
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:
Beispiel .
Tags und Links c++ c++11 boost boost-range