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