[Issue 3008] Members of non-lvalues (rvalues) can be assigned to.
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Thu Jul 30 11:12:26 PDT 2009
http://d.puremagic.com/issues/show_bug.cgi?id=3008
--- Comment #12 from Steven Schveighoffer <schveiguy at yahoo.com> 2009-07-30 11:12:25 PDT ---
(In reply to comment #9)
> You make it sound like we wouldn't be able to use structs anymore!
>
> Not the case.
What I mean is this:
original:
class C
{
void foo();
}
struct S
{
C getValue() {...}
}
void main()
{
S s;
s.getValue.foo(); // should be allowed, getValue does not return an rvalue
}
new version (assume C is the same):
struct MyNiftyPointerTo(T)
{
...
}
struct S
{
MyNiftyPointerTo!(C) getValue() {...}
}
void main()
{
S s;
s.getValue.foo(); // oops, compiler says MyNiftyPointerTo!(C) is an rvalue
because it's a struct.
}
What I'm saying is you have no ability to make wrapper or extended builtin
types because they are now always treated as rvalues even though their
semantics are entirely lvalue-ish. Maybe MyNiftyPointerTo!(C) connects to a
remote object on a server, and invokes methods there. You're saying this isn't
a valuable enough extension to the type system for D to allow it?
--
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