[Issue 3748] inout does not work properly

d-bugmail at puremagic.com d-bugmail at puremagic.com
Wed Aug 31 12:11:27 PDT 2011


http://d.puremagic.com/issues/show_bug.cgi?id=3748



--- Comment #5 from Steven Schveighoffer <schveiguy at yahoo.com> 2011-08-31 12:11:15 PDT ---
it is not debateable.  The issue is, when inside an inout-enabled function, all
inout variables are *assignable* from other inout variables.

So for example, if you have:

inout(int) * globalvar;

inout(int)* foo(inout(int)* x)
{
   return globalvar;
}

void main()
{
   int x;
   auto y = foo(&x);
}

what type is y?  inout(T) is changed to just T in this scenario, since the
constancy factor is mutable, so essentially, you now have a mutable pointer to
what is treated as const as you say.

The type system *must* prevent non-local variables (i.e. variables not on the
stack) from being inout.  Otherwise, you cannot make guarantees about inout.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------


More information about the Digitalmars-d-bugs mailing list