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 mit std::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? Ist std::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.


Anmelden zum Antworten