Ich habe schon eine ganze Weile mit C++ programmiert und es macht mir viel Spaß, Vorlagen zu benutzen. Was ich in letzter Zeit aufgrund meines Vorstoßes in Embedded-Programmierung gefragt habe, ist, wie man erwarten sollte, dass sich der Linker in Bezug auf Code-Duplizierung in Template-Instanzen verhält, in denen der Template-Parameter anders ist.Optimiert der Linker normalerweise doppelten Code von verschiedenen C++ - Vorlageninstanzen?
Für mehrere Instanzen derselben Vorlage mit denselben Parametern dies gut bekannt ist, während Link Zeit optimiert werden entfernt (siehe auch: How does C++ link template instances)
aber in meinem Fall bin ich interessiert, wenn der Linker jede dupliziert erkennen Code zwischen zwei Vorlagen, die mit verschiedenen Parametern instanziiert wurden. Da es sich um verschiedene Typen handelt, würde ich davon ausgehen, dass sie nicht automatisch zusammenbrechen würden. Da sie jedoch einige Funktionen haben könnten, die nicht von den Template-Parametern abhängen und somit zwischen den beiden Klassen identisch wären, könnte man annehmen, dass ein Linker diese Funktionen optimieren und somit Platz sparen könnte.
Was wäre das erwartete Verhalten in diesem Fall?
Haben Sie godbolt versucht? – lorro
Ja siehe zum Beispiel: https://godbolt.org/g/jbx2ms, aber das ist nur der Compiler, soweit ich es sagen kann und nicht der Linker. Dort unten gibt es den gleichen Code, den der Linker optimieren könnte, aber ich weiß nicht, ob es das normalerweise tun würde. – Blackclaws