Wenn ich einen einfachen arithmetischen Ausdruck mit valarray
schreibe und das Ergebnis auto
zuweise, bekomme ich einen segfault, wenn ich versuche, auf das Ergebnis von gcc zuzugreifen.
Die Referenz besagt, dass die Implementierung möglicherweise den Rückgabetyp der arithmetischen Operationen auswählen kann nicht valarray
-Wert, sondern etwas, das sich so verhält:
Die Operatoren, die valarray nach Wert zurückgeben, dürfen stattdessen ein Objekt eines anderen Typs zurückgeben. Ein solcher Typ muss implizit in valarray konvertierbar sein und als Argument für alle Funktionen unterstützt werden, die valarray & amp; Argumente. Dies ermöglicht Copy-on-Write-Implementierungen.
Nun, mein operator<<
sollte diese "implizite Umwandlung" fordern, oder?
Warum bekomme ich einen segfault?
%Vor%gcc Version 6.2.0 20160901 (Ubuntu 6.2.0-3ubuntu11 ~ 14.04)
Ich wurde skeptisch, als ich clang versuchte (auf Linux, also wahrscheinlich stdlib von gcc) und ... es funktioniert:
%Vor%clang Version 3.9.1-svn288847-1 ~ exp1 (Zweige / Release_39)
Nun, bevor ich einen gcc-Fehler einreiche ... mache ich etwas falsch? Ist mein auto
böse? Oder ist es wirklich gcc?