Exportvorlagen sind ein Feature in C++ vor 2011, bei dem die Implementierung einer Vorlage auf eine separate Quelldatei verschoben wurde.Wie werden Exportvorlagen implementiert?
According to this article, ist es möglich, "manuelle" Exportvorlagen über manuelle Angabe für jeden in der Implementierungsdatei verwendeten Typ zu schreiben. Da dies einfach spezifische Symbole erzeugen würde - ich glaube ähnlich wie überladene Funktionen - macht es Sinn, wie dies umgesetzt werden würde.
Aber es ist mein Verständnis, dass eine exportierte Vorlage (über das export
Schlüsselwort) beliebig ist. Es kann jede Art von Daten übergeben werden.
dieses einfache Beispiel:
template<typename T>
T add(T value1, T value2) {
return value1 + value2;
}
Die Ausgabebaugruppe für dieses Beispiel würden wild unterscheiden, wenn T ein int
ist, ein float
, oder insbesondere ein std::string
(und jede andere Art, die die +
Ladene Operatoren).
Da es völlig willkürlich ist, wie würde ein Compiler dieses Schlüsselwort implementieren?
Meine Vermutung ist Code-Generierung bei Link-Zeit, die höchstwahrscheinlich ein benutzerdefiniertes Objekt Dateiformat erfordern würde, enthält einige Darstellung des Codes. Aber das macht den Linker auch zu einem Compiler, der die Preprocessor-Compiler-Linker-Trennung unterbricht.