std::initializer_list nicht optimiert
-
Hallo,
std::initializer_list
hat ja sehr viele Nachteile (nur homogene Typen, kein Forwarding, shadowed alle anderen Konstruktoren und macht somit aggregate-initialization / uniform-initialization unmöglich), aber ich dachte immer, dass sie zumindest zero-overhead sind. Nun scheint es mir aber, dass selbst die besten Compiler wesentlich schlechteren und längeren Code erzeugen für die Variante mitstd::initializer_list
im Vergleich zu z.B. Variadic Templates. Mein Experiment dazu: https://godbolt.org/g/On2RBe
Was meint ihr dazu? Ist die einzig korrekte Lösung,std::initializer_list
fortan komplett zu ignorieren, als gäbe es es gar nicht? Iststd::initializer_list
irgendwie noch zu retten mit einer clevereren Implementierung?LG
-
zuerst: ich liebe das neue Multi-Compiler-Output-Windows Feature das Matt eingebaut hat
du deiner Frage: ich würde das in der gcc/llvm Newsgroup posten - sieht wirklich nicht so gut aus
-
wenn es für deine application ok is, mach constexpr daraus.
Ändert aber nichts daran, falls der compiler etwas falsch machen sollte.