Das stimmt nicht, denn ein Objekt hat keine Interfacereferenzen.
Deshalb lässt sich das Problem nicht so einfach lösen.
Im ARC hat es das doch.
Wie gesagt, das Problem lässt sich sofort lösen, wenn der Compiler bei Übergabe von irgendwas an einen Const-Parameter eine Variable zwischenschaltet.
Immer wenn es da
implizit von TObject zu Interface castet.
Bzw. bei
TestFunction(TSomething.Irgendwas.Create)
gibt es doch dieses Problem.
Bei
TestFunction(Something.GetInterface)
geht es, da Delphi aus diesem gemanagten Result einen Var-Parameter macht, welcher über eine generierte lokale Variable läuft.
Und bei
TestFunction(Something.GetObject)
würde ich jetzt das selbe Problem vermuten, aber hier ist man selber Schuld, da man Objekt- und gezählte Interfacereferenzen niemals vermischen sollte.
procedure TestFunction(const Reference: IInterface);