[fpc-pascal] Can class function used in specialized class use intristic functions Low, High with generic type ?
Cyrax
evvke at hotmail.com
Thu Apr 20 22:10:19 CEST 2017
On 20.04.2017 14:37, Sven Barth via fpc-pascal wrote:
> Am 20.04.2017 13:02 schrieb "LacaK" <lacak at zoznam.sk>:
>>
>> Hi *,
>>
>> 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).
>
> Regards,
> Sven
>
>
>
> _______________________________________________
> fpc-pascal maillist - fpc-pascal at lists.freepascal.org
> http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
>
I think that this was the bug report and which you did fix back then :
<url:http://bugs.freepascal.org/view.php?id=28832>
More information about the fpc-pascal
mailing list