Nein, es ist nicht implizit inlined. Der Compiler kann nicht wissen, ob ein anderes Modul diese Funktion verwenden wird, also muss er Code dafür generieren.
Das bedeutet zum Beispiel, dass wenn Sie die Funktion wie in einem Header definieren und den Header zweimal enthalten, Sie Linker Fehler über mehrere Definitionen erhalten. Explizit inline
behebt das.
Natürlich kann der Compiler die Funktion noch inline einfügen, wenn er denkt, dass dies effizient ist, aber es ist nicht das gleiche wie eine explizite Inlining.
Template-Funktionen sind implizit inline inlined in dem Sinne, dass sie kein inline
erfordern, um mehrere Definitionsfehler zu verhindern. Ich denke nicht, dass der Compiler gezwungen ist, diese auch zu inline zu schreiben, aber ich bin mir nicht sicher.
Der Compiler ist nie gezwungen, etwas inline zu schreiben, weil es nur eine Optimierung ist. Es gibt keine Möglichkeit, dass ein Programm den Unterschied erkennen könnte. – curiousguy