>
> I have some generic class:
>
> generic T2DNumericArray<T> = object(specialize T2DArray<T>)
> public
> class function Truncate(Value: double): T; inline;
> ...
>
> In class function Truncate I want check if supplied Value is in
range of T.
> T will be always ordinal type (byte, integer) ... (I know this, but
compiler does not of course)
>
> Can I use in :
>
> class function T2DNumericArray.Truncate(Value: double): T;
> begin
> if Value > High(T) then
> Result := High(T)
> else if Value < Low(T) then
> Result := Low(T)
> else
> Result := Value;
> end;
>
> I understand, that from compiler POV T can be any type, so High()
and Low() can be invalid, but I wonder if there is any way how to
solve this.
The compiler will use dummy values while parsing the generic, but
during specialization it will use the correct ones. Though it might be
that you'd need 3.1.1 for it (dont know right now when I had fixed that).
Yes, I can confirm, that in 3.1.1 it works, in 3.0.2 does not.
Thank you Sven
-Laco.
_______________________________________________
fpc-pascal maillist - fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal