Why D const is annoying

Mehrdad wfunction at hotmail.com
Sat Dec 10 20:27:31 PST 2011


Another bug, this time regarding invariant()....

(I think this is related to the previous one about int vs. size_t in 
template parameters, but I'm not sure...)

     template NArray(T, size_t N)
     { static if (N > 0) { alias NArray!(T, N - 1)[] NArray; } else { 
alias T NArray; } }
     struct Tensor(T, Length...)
     {
         enum N = Length[0];
         invariant() { }
         this(scope NArray!(T, N) copyOfItems...) { }
         @property T[] data() { return null; }
         Tensor!(typeof(mixin("data[0] " ~ op ~ " data[0]")), N) 
opBinary(string op)(Tensor other)
         { return typeof(return).init; }
     }
     void main()
     {
         Tensor!(size_t, 1) a;
         a = a + a;
     }

Error: this for __invariant needs to be type Tensor not type Tensor!(uint,1)


More information about the Digitalmars-d mailing list