[fpc-devel] constant evaluation in generics params
Martin Frb
lazarus at mfriebe.de
Wed May 4 04:25:09 CEST 2022
In the below code specialization takes a boolean constant.
The compiler (kind of) allows expressions that can be evaluated at
compile time.
Of course
specialize TGen< 5>1 >;
does not work. The ">" can't be distinguished from the end of the param
list.
Not sure why
specialize TGen< 5=1 >;
does not work.
It does work though, if the expression is in brackets.
And talking about brackets
specialize TGen< (5>1) >;
does not, but could work. while in () the ">" can't be the end of the
param list.
program Project1;
{$mode objfpc}{$H+}
type
generic TGen<const CC: boolean> = class end;
TBar1 = specialize TGen<true>;
TBar2 = specialize TGen<(1=1)>;
TBar3 = specialize TGen<1=1>; // err
TBar4 = specialize TGen<(1>1)>; // err
TBar5 = specialize TGen<(1<1)>; // err
More information about the fpc-devel
mailing list