compile time opCall array assignment

Don nospam at nospam.com
Thu Feb 25 23:59:24 PST 2010


strtr wrote:
> struct S{
> 	int[2] arr = 0;
> 
> 	static S opCall( int i1_, int i2_) {
> 		S res = void;
> 		res.arr[0] = i1_;
> 		res.arr[1] = i2_;
> 		return res;
> 	}
> }
> 
> const S CS= S(0,0);
> 
> Why can't this be evaluated at compile time?
> (And how do I fix it :))
> 
Because expressions of the form a.b[i]= c aren't yet supported in CTFE.
It will work in a couple of compiler releases from now.
Workaround:
int[2] x;
x[0]=i1_;
x[1]=i2_;
res.arr=x;



More information about the Digitalmars-d-learn mailing list