On Tue, Jul 16, 2019 at 8:35 AM Michael Van Canneyt <[email protected]>
wrote:
> 2. The Low(T) does not work, as there is no way to tell Delphi that T must
> be an enum.
>
Hmm, I guess it makes sense Delphi wouldn't allow the "Low", based on other
Delphi generics behavior (more like C#, whereas FPC is more like C++.)
I only realized recently that you can't even actually use "arithmetic"
operators on Delphi generics at all, E.G, the following is valid FPC code,
but not valid Delphi code:
program Example;
{$mode Delphi}
type
TComparer<T> = record
public
class function Min(const A, B: T): T; static; inline;
class function Max(const A, B: T): T; static; inline;
end;
class function TComparer<T>.Min(const A, B: T): T;
begin
if A < B then
Result := A
else
Result := B;
end;
class function TComparer<T>.Max(const A, B: T): T;
begin
if A > B then
Result := A
else
Result := B;
end;
begin
WriteLn(TComparer<Single>.Min(2.0, 4.0));
WriteLn(TComparer<Single>.Max(2.0, 4.0));
end.
_______________________________________________
fpc-devel maillist - [email protected]
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel