"Inlining" und "doppelte Symbole" sind verschiedene Dinge. Das inline
Die Schlüsselwörter ermöglichen explizit mehrere Definitionen (dh Sie befreit Sie von der Eindefinitionsregel), sodass die Plattform (Compiler und Linker) wissen muss, wie sie damit umgehen und dedupliziert werden.
(Dies geschieht die ganze Zeit für Klassenmitgliederfunktionen, die in den Headern definiert sind.)
Wenn Sie nur wollen Codegenerierung Um zu passieren, können Sie die Adresse der Funktion irgendwo speichern:
auto fp = my_inline;
Auf diese Weise muss der Compiler eine Definition der Funktion generieren, um ihm eine Adresse zu geben. Aber selbst wenn Sie dies in jeder Übersetzungseinheit tun, erhalten Sie keinen Linker -Fehler, da dies zum Zeitpunkt der Verknüpfung dedupliziert wird. Die Anforderung, dass alle Definitionen identisch sind, stellt sicher, dass dies gut definiert ist.