Hmm, habs gerade gelesen in der VC - Hilfe, konnte es aber nicht richtig glauben.
Warum den? - Soweit ich mich erinnern kann taucht eben export noch recht viel in dieser VC - Hilfe auf.
Aber kein Template-Export. Warum das kaum ein Compiler unterstützt? Vermutlich weil es kein Compilerbauer für notwendig gehalten hat den Aufwand für das Feature in kauf zu nehmen!
Geht ja schließlich auch ohne.
Das wird nicht unterstützt, weil dies die compiler/linker trennung über den haufen werfen würde.
Die Compiler funktionieren momentan in etwa so:
zuerst wird jede Übersetzungseinheit einzeln Compiliert, jede funktion wird also übersetzt, und die Ergebnisse in die Objekt dateien geschrieben.
Danach wird der linker aufgerufen, der diese dateien zusammenfasst. dabei werden referenzen auf funktionen in den Objektdateien durch die echten addressen ersetzt.
Mit export ergibt sich nun ein problem. Wenn der Compiler ein export-template findet, weis er zu dem zeitpunkt meistens nicht, welche Spezialisierungen benötigt werden, und somit kann er nichts in die Objektdatei schreiben. Dies weis er erst, wenn die anderen Objektdateien compiliert wurden, und der linker festgestellt hat, welche spezialisierungen der Funktion gebraucht werden. Zu dem zeitpunkt ist es aber zu spät, der Compiler hat seinen job getan. Wir brauchen also eine Art COmpiler->Linker loop, der solange durchläuft, bis alle template referenzen korrekt aufgelöst wurden. Und das würde die architektur aller Compiler übern haufen werfen, der Comeau zb wurde extra für export Designed.