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
constDefinition 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.