Da die es nicht wussten, sollte es "normal" implementiert sein, also als VAR.
Wenn der Typ das nicht unterstützt, dann kann man es "intern" immernoch anders umsetzen.
Delphi-Quellcode:
class operator TMyRecord.Inc(var Value: TMyRecord);
var
Temp: TMyRecord;
begin
Temp := Value;
...
Value := ...;
end;
Genau genommen fehlt sogar noch die Inc-Version mit zwei Parametern.
Inc(i, 123);
Reden wir hier von Record-Operatoren?
Ja und Nein.
Aus technischen Gründen ist es "anfangs" nur für Records implementiert wurden.
Warum man vergessen hat das für Interfaces zu bauen, weiß ich nicht. (das ginge schon immer)
Dankt ARC wäre es, inzwischen seit XE4, auch möglich das bei Objekten (Klassen) zu benutzen.
Und grade bei Objekten wird der das immer mehr, wenn nun auch noch Objektinstanzen erstellt und freigegeben werden müssen, statt nur einem billigem Record.
Ein Vorteil bei den Objekten ist, daß man dort tricksen kann und bei diesen Operatoren einfach die selbe Objektreferenz zurückgibt. (wenn man blind hofft, daß Emba diese Funktionen nicht doch mal für zwei Objekte benutzt)