<p>Am 10.10.2015 12:15 schrieb "Michael Van Canneyt" <<a href="mailto:michael@freepascal.org">michael@freepascal.org</a>>:<br>
>> Just allow those three<br>
>> operator overloads for normal records and have them be present in the Init<br>
>> RTTI of the record so that fpc_initialize(), fpc_finalize() and fpc_copy()<br>
>> can pick them up. This will be needed anyway should such records be placed<br>
>> in arrays or other records or classes. (Of course from great power comes<br>
>> great responsibility ;) )<br>
><br>
><br>
> I don't know how this works internally.<br>
> Is fpc_initialize called for every record type ? I sincerely hope not.</p>
<p>For every variant, managed type and record with init RTTI (which is the case if the record contains a variant, a managed type or a record with init RTTI). Same for fpc-copy and fpc_finalize. Records that contain managed operators would simply fall under the category "record with init RTTI as well", those that don't wouldn't have an init RTTI (at least if they don't fullfill the criteria for it anyway ;) ).</p>
<p>> Does the compiler check the actual RTTI to decide whether fpc_initialize and friends are called ?</p>
<p>As said above only on types that directly or indirectly need it.</p>
<p>Regards,<br>
Sven</p>