Gerade in Ada mit Free gebastelt und auf den Fehler gestoßen.
actual for „X“ must be a variable
Minimalbeispiel:
procedure Free is new Ada.Unchecked_Deallocation(Node, Node_Access); procedure Test (N : Node_Access) is begin Free(N); end Test;
Der Fehler hat gar nichts mit der Free Funktion bzw. dem Aufruf zu tun, sondern N muss als „in out“ deklariert werden.
procedure Test (N : in out Node_Access) is begin Free(N); end Test;
Dann passt alles.