Structs and compiletime evaluation
D_Learner via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Thu Aug 13 05:07:45 PDT 2015
I am having this struct :-
struct COMPILETIME_BM_PRE
{
void initialisebmBc(S,C,I,int k)( const S pattern ,ref I[C]
bmBc){
static if ( k< ASIZE ){
bmBc[ALPHABET[k]] = size;
initialisebmBc!(S,C,I,k+1)( pattern ,bmBc);
}
}
void initialisebmBc(S,C,I,int k : ASIZE)( const S pattern
,ref I[C] bmBc){}
void calculatebmBc(S,C,I,int i)( const S pattern ,ref I[C]
bmBc)
{
static if ( i < size -1 )
bmBc[pattern[i]] = size -i-1;
calculatebmBc!(S,C,I,i+1)(pattern ,bmBc);
}
I[C] preBmBc(S ,C,I)( const S pattern ,ref I[C] bmBc){
this.initialisebmBc!(S,C,I,0)( pattern ,bmBc);
this.calculatebmBc!(S,C,I,0)(pattern ,bmBc);
return bmBc;
}
}
In another module I use the struct as below :-
int[char] bmBc;
COMPILETIME_BM_PRE bmh ;
enum bmBc1 = bmh.preBmBc!(string ,char,int)( pattern , bmBc);
On last line , I get the error message : `Error: variable bmh
cannot be read at compile time` , yet I thought this value would
be evaluated at compiletime.
More information about the Digitalmars-d-learn
mailing list