> On Apr 25, 2018, at 3:22 PM, Marco van de Voort <[email protected]> wrote:
>
> I think if you want to pursue this, you must be much more concrete. Both the
> benefits and the potential pitfalls.
What are the potential pitfalls? Sven pointed out passing around pointers but
don’t we know better than this since we’re using Pascal and know how memory
works? If a function takes a class as a parameter don’t you know if the
function is going to store it for later or not? Even if the class is on the
heap I don’t just pass it another function and then forget about (creating a
leak) or clean it up immediately because I think the function owns it now.
It’s basically like doing this right? I do this often to prevent copying but I
just learned this year about the “constref” keyword which cleans up the @
symbol (another small optimization which I really appreciate being added).
var
rec: TSomeRec;
begin
DoThis(@rec);
end;
I know DoThis isn’t going to keep the pointer alive for later or I would never
do this. Since the keyword is an explicit opt-in I assume the programmer really
does know they’re doing because they are 100% certain they want the class to
only exist for the lifetime of the scope.
In fact adding the keyword is like an explicit contract to the compiler that
you INSIST the class be destroyed at the end of the scope. That’s the entire
purpose of it, eg. “kill me at the end of scope so I don’t have to do this
myself later”. :) If the programmer was smart enough to tell the compiler that
we can assume they won’t be stupid and pass it around to some random function
they don’t trust.
Regards,
Ryan Joseph
_______________________________________________
fpc-pascal maillist - [email protected]
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal