[Issue 6770] New: inout is allowed on fields
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Wed Oct 5 06:49:00 PDT 2011
http://d.puremagic.com/issues/show_bug.cgi?id=6770
Summary: inout is allowed on fields
Product: D
Version: D2
Platform: Other
OS/Version: All
Status: NEW
Severity: normal
Priority: P2
Component: DMD
AssignedTo: nobody at puremagic.com
ReportedBy: schveiguy at yahoo.com
--- Comment #0 from Steven Schveighoffer <schveiguy at yahoo.com> 2011-10-05 06:48:16 PDT ---
inout cannot be allowed to be an attribute for fields, since inout is
implicitly cast at the end of an inout function.
With this allowance, I can obtain a mutable pointer to an inout field, even
though it should be treated as const:
struct S
{
inout(int) x;
inout(int)* foo() inout
{
return &x;
}
}
void main()
{
S s;
auto xp = s.foo();
*xp = 3;
assert(s.x == 3);
}
inout should be a temporary condition, only allowed for stack-stored types.
But fields can be placed outside the stack, since you can place any struct or
class outside the stack.
Alternatively, you could be able to declare a struct field as inout, and then
not allow that struct type to ever be placed anywhere but the stack. But I do
not see a good use case for that feature.
--
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