Array as an argument, ambiguous behaviour.

Tobias Pankrath tobias at pankrath.net
Wed Jan 29 07:56:48 PST 2014


On Wednesday, 29 January 2014 at 15:38:34 UTC, Cooler wrote:
>> It's not unpredictable, at least not more unpredictable then 
>> fun2.
>>
>> Should we dissallow this two?
>>
>> int[] a = [1,2,3,4];
>> b = a;
>> b ~= [5, 6, 7, 8];
>
> You don't understand me. You consider that I am author of the 
> fun() and the caller side.
> Read two post above 
> http://forum.dlang.org/post/dxqxlhyhmdfuashhmtrz@forum.dlang.org
>
> I consider that author of fun() and author of caller side are 
> different persons. They must agree between them how to provide 
> some functionality.
> If I fun()'s author why do I need to provide fun3() if I 
> already provided fun1() and fun2()?
> I I caller's author - why may I require fun3() variant, if I 
> already have fun1() and fun2()?

Oh, I guess I understood quite well. I just don't see a special 
problem with arrays, it's just the same as any other aliasing 
issue. Take this for example:

void funS(S* s); // S is a struct, maybe containing a ptr and a 
length member :-)

Should we disallow this as well? When I give a unqualified 
pointer to a function, the only guarantee I get is that it's 
pointing to the same location after the call. It's the same with 
arrays.

And since we have this problem every time we pass a pointer to 
function I don't see why arrays should get special treatment.



More information about the Digitalmars-d-learn mailing list