Steven Schveighoffer wrote:
On Wed, 29 Jul 2009 10:16:33 -0400, grauzone <[email protected]> wrote:
Daniel Keep wrote:
Maybe the compiler could rewrite the above as:
auto t = a.b;
t.c = 3;
a.b = t;
Unless it can prove it doesn't need to. Same solution as to the op=
conundrum.
Yes! At least that's what the user wants.
The compiler has to detect, that the object was modified at all. (To
know whether it should generate code to write back the property.)
Would this make the compiler much complexer?
You also have to deal with nested properties:
a.b.c.d = 3;
turns to
auto t = a.b;
auto t2 = t.c;
c.d = 3;
t.c = t2;
a.b = t;
???
Yeah, I think this idea is no good. a.b.c.d.e.f = 3, results in one
gigantic mess, which the user might not want.
Properties don't have to be exactly like fields. I think we need to get
away from that idea.
Agreed. But it would be nice if they didn't allowed code with identical
syntax and useless semantics.
It would be nice if the compiler could help by simply rejecting what it
can reject (assignment to rvalues), but other than that, there's not
much that can be done.
This can be detected in simple cases, but in the case where the end
point is a function, it will be difficult or impossible.
I think it is eminently possible, but we must figure a solution that
doesn't complicate the language all too much.
I don't believe the problem needs to be solved.
To me it looks like an essential problem.
Andrei