Why D const is annoying

Mafi mafi at example.org
Sun Dec 11 09:07:37 PST 2011


Am 10.12.2011 21:25, schrieb Walter Bright:
> On 12/10/2011 11:03 AM, Mehrdad wrote:
>> So how are you supposed to implement opApply on a container (or e.g.
>> here, a
>> matrix)? Copy/paste the code for const- and non-const versions?
>
> Internal to a function, inout behaves like 'const'. You won't be able to
> modify the data. Therefore, if there is no inout in the return type, use
> 'const' in the parameter list instead.
>
> The purpose of inout is to transmit the 'constness' of the function
> argument type to the return type, using only one implementation of that
> function. That requires the function to internally regard inout as const.

But what about:
void f(ref inout(int)* a, inout(int)* b) { a = b; }
This cant work with const because that would violate the const system. I 
think the rule should be that either the return type must be inout or at 
least one ref/out parameter.
Am I overlooking something?

Mafi


More information about the Digitalmars-d mailing list