<p>Am 12.09.2017 06:49 schrieb "Ryan Joseph" <<a href="mailto:ryan@thealchemistguild.com">ryan@thealchemistguild.com</a>>:<br>
><br>
> This is a common pattern I’m finding when working with generics in FPC. In the example below there is an equals comparison that needs to be checked but for some types such as records there is no default operator overload so I need to add one for every record that will be specialized in the class.<br>
><br>
> Is there a way around this? I’d like to just skip the comparison for specialized types that can’t be compared if possible.<br>
><br>
> type<br>
>         generic TCollection<T> = class<br>
>                 procedure AddValue (value: T);<br>
>         end;<br>
><br>
><br>
> procedure TCollection.AddValue (value: T);<br>
> begin<br>
>         // comparison operator doesn't exist for records so I get compiler errors if I specialize TCollection<> with a record type<br>
>         if value = T then<br>
>                 ;<br>
> end;</p>
<p>You could try to use the TEqualityComparer<> (or so) types from the rtl-generics package (don't know in which unit exactly they are ^^') as those can work with records without operator overloads.</p>
<p>Regards,<br>
Sven</p>