Custom Allocator fuer std::vector



  • Klaus82 schrieb:

    Nathan schrieb:

    Klaus82 schrieb:

    ist doch alles in Butter - zur Laufzeit.

    Ja, zur Laufzeit.
    Templateparameter sind aber Teil des Typen und Typen werden zur COMPILE-Zeit bestimmt. Da kannst du keine Laufzeitvariable hin tun.

    Also ist diese const Definition ein workaround?

    Gruß,
    -- Klaus.

    Wenn du folgendes hast:

    const int i = 5;
    

    Ist der Compiler in der Lage i hardzucoden, überall dort wo i steht, steht dann im Programmcode quasi 5. Deshalb kannst du das auch als Templateparameter nutzen.
    Ersetzt du das aber durch bspw:

    const int i = foo();
    

    Kann diese Optimierung nicht stattfinden. Es gibt dann lediglich einen Fehler, wenn du versuchst i zu ändern. Dann kannst du das nicht mehr als Templateparameter verwenden, obowhl du kaum was geändert hast.
    Aus diesem Grund gibt es seit C++11 constexpr, dann gibt es einen Fehler, wenn du das versuchst zu machen.


Anmelden zum Antworten