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





--- Comment #12 from Steven Schveighoffer <schvei...@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: -------

Reply via email to