[fpc-devel] Copy/move operator

Sven Barth pascaldragon at googlemail.com
Wed Jun 19 18:01:03 CEST 2019


Ben Grasset <operator97 at gmail.com> schrieb am Mi., 19. Juni 2019, 16:21:

> On Tue, Jun 18, 2019 at 11:08 AM Sven Barth via fpc-devel <
> fpc-devel at lists.freepascal.org> wrote:
>
>> Those operators can't be inlined, because they're called from helper
>> code, not from the compiler directly. The LLVM backend won't change
>> anything here.
>>
>
> Is there any real purpose to implementing `Copy` versus just implementing
> `operator :=` (or `operator Implicit` when in {$mode Delphi})? Those can be
> inlined, and in practice are used in essentially all the places `Copy` is.
> By which I mean, IIRC you never really see calls to `fpc_copy_proc` in the
> generated assembler unless you've specifically implemented `Copy` yourself.
>

It wouldn't matter if the function is called Copy, operator:= or
"jdjfjsje". Once a copy management operator is defined the record type is
considered "managed" and thus all assignment operations are routed through
fpc_copy_proc just as is the case when a record contains at least one field
of a managed type (e.g. AnsiString).
Also using operator:= would go against the principle that existing,
internal operators can't be overloaded.

Regards,
Sven

>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-devel/attachments/20190619/8ee3b7a9/attachment.html>


More information about the fpc-devel mailing list