Hallo,
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.
Den Artikel habe ich jetzt dahingehend verstanden als dass nur durch das
Includieren einer Header-Datei die Objektdatei vergroessert wird. Koennt
ihr mir dies erklaeren, in meinem C++-Buch werden Templates nicht soo
ausfuehrlich besprochen.
Gruss,
Bernhard
--
_________ http://www.bwalle.de _________________________________________________
Dieselben Naturkräfte, die uns ermöglichen, zu den Sternen zu fliegen,
versetzen uns auch in die Lage, unseren Stern zu vernichten.
-- Wernher von Braun