identic ref/inout parameter

Regan Heath regan at netmail.co.nz
Fri Sep 14 03:48:31 PDT 2007


Wilhelm wrote:
> Who do I determine in a function (probably with a assert statement) that the function with more the one ref/inout parameters of the same type are not called with the same variable like:
> 
> private import std.stdio;
> 
> int main(char[][] args)
> {
>     int i=3;
>     test( i,i,i,i);
>     return 0;
> }
> 
> 
> void test(ref int r1, ref int r2, inout int i1, inout int i2)
> {
> 	writefln ("           Ref: r1=%d r2=%d", r1, r2);
> 	writefln ("         InOut: i1=%d i2=%d", i1, i2);
> 	r1 += 2;
> 	writefln ("r1 += 2;   Ref: r1=%d r2=%d", r1, r2);
> 	writefln ("r1 += 2; InOut: i1=%d i2=%d", i1, i2);
> 	i2 += 2;
> 	writefln ("i1 += 2;   Ref: r1=%d r2=%d", r1, r2);
> 	writefln ("i1 += 2; InOut: i1=%d i2=%d", i1, i2);
> }
> 
> !! That may cause interesting results !!

Maybe...

	assert(&r1 != &r2);
	assert(&r1 != &i1);
	assert(&r1 != &i2);
	assert(&r2 != &i1);
	assert(&r2 != &i2);
	assert(&i1 != &i2);

Regan


More information about the Digitalmars-d-learn mailing list