<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>