<div dir="ltr">Hello,<div><br></div><div>Please confirm if this is a bug or my mistake.</div><div>When i try to overload a assignment operator on a generic class with type restriction i get this error: "Impossible to overload assignment for equal types". However, if i remove the type restriction, the compiles.</div><div><br></div><div>==== CODE (compiles) ===</div><div><br></div><div><div>program generic_without_type_restriction;</div><div><br></div><div>{$MODE objfpc}</div><div>{$MODESWITCH AdvancedRecords}</div><div><br></div><div>type</div><div><br></div><div> generic Weak<T> = record</div><div> private</div><div> FValue: T;</div><div> public</div><div> class operator := (const value: T): specialize Weak<T>; inline;</div><div> end;</div><div><br></div><div>class operator Weak.:=(const value: T): specialize Weak<T>;</div><div>begin</div><div> Result.FValue := Value;</div><div>end;</div><div><br></div><div>begin</div><div>end. </div></div><div><br></div><div>============</div><div><br></div><div>
<div style="font-size:small;text-decoration-style:initial;text-decoration-color:initial">==== CODE (doesn't compiles) ===</div><div style="font-size:small;text-decoration-style:initial;text-decoration-color:initial"><br></div><div style="text-decoration-style:initial;text-decoration-color:initial"><div>program
<span style="font-size:small;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">generic_with_type_restriction</span>
;</div><div><br></div><div>{$MODE objfpc}</div><div>{$MODESWITCH AdvancedRecords}</div><div><br></div><div>type</div><div><br></div><div> generic Weak<T: IInterface> = record</div><div> private</div><div> FValue: T;</div><div> public</div><div> class operator := (const value: T): specialize Weak<T>; inline;</div><div> end;</div><div><br></div><div>class operator Weak.:=(const value: T): specialize Weak<T>;</div><div>begin</div><div> Result.FValue := Value;</div><div>end;</div><div><br></div><div>begin</div><div>end. <br></div></div><div style="font-size:small;text-decoration-style:initial;text-decoration-color:initial"><br></div><div style="font-size:small;text-decoration-style:initial;text-decoration-color:initial">============</div>
<br></div><div>Regards</div><div><br></div></div>