Das Kompilieren der folgenden mit Null initialisierten Atomics unter g ++ 4.7 und g ++ 4.8.2 dauert Stunden. Default-initialisierte Atomics und Null-initialisierte nicht-atomare Kompilierung sofort.
%Vor% g++ -std=c++11 array.cpp
Ist die einzige Option, das Array manuell zu memsen?
Wenn man in GCC mit GDB bricht, wenn es beschäftigt ist, zeigt es sich, dass es in split_nonconstant_init_1
, wo der Code einen Kommentar enthält:
FIXME: Die geordnete Entfernung ist O (1), so dass die ganze Funktion im schlechtesten Fall quadratisch ist.
(O (1) ist wahrscheinlich ein Tippfehler, die Funktion ist O (N), und der Kommentar würde keinen Sinn ergeben, wenn er O (1) ist.)
Also, ja, das ist ein Compiler-Bug und einer, der bereits bekannt ist. Allerdings habe ich den GCC-Bugzilla nicht überprüft, um zu sehen, ob sie bereits einen einfachen Testfall haben; Wenn dies nicht der Fall ist, sollten Sie dies melden.
Was Sie jetzt tun können, zeigen die Kommentare zu Ihrer Frage, dass Sie bereits eine geeignete Problemumgehung haben.