Hi Ich glaube, mit so theoretischen Fragen bist Du hier nicht gut aufgehoben. Versuch es mal in de.comp.lang.iso-c++.
hab gerade die aktuelle c't bekommen und mir den Artikel Generische Programmierung durchgelesen, wo es auch um C++ Templates geht. Was ich nicht verstehe ist folgendes
[...] Die direkte Konsequenz daraus ist, dass Templates keine uebersetzbaren Einheiten sind. Die Implementierungen von Template- Methoden muessen in den Header-Dateien untergebracht werden. Bei der STL bedeutet beispielsweise allein das Einfuegen der Praeprozessor- Direktive #include
unter Linux eine Vergroesserung der Objektdatei um 36 kByte. Jede neue Instanz von list kostet weitere 17 kByte. [...]
Mal abgesehen davon dass ich eine Header-Datei
noch nie benoetigt habe (ich hab einfach immer <list>, ... verwendet), dachte ich bisher, dass ein Template alleine, wenn es nicht benoetigt wird, noch gar keinen Code erzeugt. Also ich ging immer davon aus, dass Code erst erzeugt wird, wenn ich z. B. ein Objekt mit list<int> erzeuge oder eine Template-Funktion aufrufe.
So kenne ich das auch. Ich hab auch Zweifel, dass jede Instanz einer Liste 17kb braucht. Weil der Code wird nur ein mal uebernommen - egal ob Du eine oder 200 Instanzen hat. Nur die Daten kommen so haeufig vor, wie Du Instanzen hast. Aber das eine leere Liste 17kb an Daten braucht, kann ich nicht glaube. Ist mir aber auch nicht so wichtig, dass ich das nun ausprobieren wuerde. Wenn es so ist, ist es so und wenn nicht, dann hat die CT halt Bloedsinn erzaehlt - mir beides egal (-; Wenn Du es wirklich genau wissen willst, dann frag in obiger Newsgroup. Bye -- 1 Bodo Kaelberer 123 http://www.webkind.de/ 3 4 "A button I have made must be pushed." (ip)