ref is pointer sugar?
Pluto
pluto at planets.not
Fri Aug 6 06:08:26 PDT 2010
== Quote from Steven Schveighoffer (schveiguy at yahoo.com)'s article
> On Fri, 06 Aug 2010 08:51:31 -0400, Pluto <pluto at planets.not> wrote:
> > Are these equivalent?
> >
> > S s;//struct
> >
> > void f(ref S s){s.x++;}
> > f(s);
> >
> > void f2(S* s){(*s).x++;}
> > f2(&s);
> They are pretty much equivalent. I think the code generated actually will
> be exactly the same. However, the compiler treats ref differently than
> pointers. For example, ref is allowed in the safe subset of D, and
> pointers are not.
> Note that you do not need to dereference pointers to access their
> pointed-to members. i.e.:
> void f2(S* s){s.x++;}
> >
> > If so, why is it stated that ref is very rarely used?
> > It looks like something I would use a lot with structures.
> What? Where does it say that? That's very wrong, ref is used
> everywhere. If not explicitly, at least every struct member function
> passes 'this' by ref.
> -Steve
I read it on the function page of D1.
"out is rare enough, and ref even rarer, to attach the keywords to them and leave
in as the default. "
I would think out to be more rare then ref.
More information about the Digitalmars-d-learn
mailing list