Why is my structure template does not compile?
    Weed 
    resume755 at mail.ru
       
    Thu Dec 11 15:09:05 PST 2008
    
    
  
struct S( Element )
{
     Element[] data;
     this( in uint len )
     {
         data.length = len;
     }
     ref Element opIndex( in uint n )
     {
         return data[n];
     }
     ref Element opIndexAssign( in Element a, in uint n )
     {
         data[n] += a;
         return data[n];
     }
     invariant()
     {
	// If I comment out next line compilation goes smoothly:
         assert( Element.sizeof > 0 );
     }
}
void main()
{
     alias S!(double) st;
     st test = st(20);
     auto a = test[2];
     test[2] = 3;
}
compilation error:
$ dmd demostruct
Error: __result = this is not an lvalue
demostruct.d(12): Error: __result = (this.data[n]) is not an lvalue
demostruct.d(18): Error: __result = (this.data[n]) is not an lvalue
demostruct.d(29): template instance demostruct.S!(double) error 
instantiating
    
    
More information about the Digitalmars-d-learn
mailing list