Why D const is annoying

Bernard Helyer b.helyer at gmail.com
Sat Dec 10 04:34:17 PST 2011


On Saturday, 10 December 2011 at 11:11:44 UTC, Walter Bright 
wrote:
> On 12/10/2011 3:04 AM, Mehrdad wrote:
>> On 12/10/2011 3:01 AM, Walter Bright wrote:
>>> On 12/10/2011 2:34 AM, Mehrdad wrote:
>>>> ... and another...
>>>>
>>>> struct Matrix(T, size_t N = 1)
>>>> { public auto mul(Matrix!(T, N) other) const { return this; 
>>>> } }
>>>
>>>
>>> In general, to refer to the current template being expanded 
>>> from inside of it,
>>> just give its name, as in:
>>>
>>> Matrix!(T,N) => Matrix
>> That's not the issue.
>>
>> If you say 'int' instead of size_t, it works fine.
>
> That's because
>
> Matrix!(int, cast(int)1)
>
> is considered a different template instantiation (and hence a 
> different type) from
>
> Matrix!(int, cast(uint)1)

Madness. I can't believe you think this is sane behaviour.



More information about the Digitalmars-d mailing list