Eliminate "new" for class object creation?

dsimcha dsimcha at yahoo.com
Mon Oct 19 20:05:52 PDT 2009


== Quote from Andrei Alexandrescu (SeeWebsiteForEmail at erdani.org)'s article
> Leandro Lucarella wrote:
> > Jason House, el 19 de octubre a las 22:20 me escribiste:
> >> Bill Baxter Wrote:
> >>
> >>> On Mon, Oct 19, 2009 at 4:00 PM, Rainer Deyke <rainerd at eldwood.com> wrote:
> >>>> Andrei Alexandrescu wrote:
> >>>>> I hereby suggest we get rid of new for class object creation. What do
> >>>>> you guys think?
> >>>> *applause*
> >>>>
> >>>> 'X(x)' and 'new X(x)' have distinct meanings in C++. ?In Java/C#/D, the
> >>>> 'new' is just line noise.
> >>> Well, I think "new Foo" is how you create a struct on the heap in D.
> >>> So it's not exactly line noise.
> >>> I don't mind getting rid of new, but there better be a good way to
> >>> allocate structs on the heap.  And it better not require me to do an
> >>> import just to be able to call the allocation function.
> >>>
> >>> I like the Foo.new syntax myself.
> >>>
> >>> --bb
> >> Actually, new can also be used for creating classes on the stack...
> >> scope T t = new T();
> >
> > Damn! This is getting confusing. It seems like allocation should be
> > revised altogether :)
> Scope will go (and this time I'm not kidding). It's very unsafe.
> Andrei

But we need a reasonable way of allocating class instances on the stack as an
optimization.  Scope provides a nice way to do that.  In general, I'm sick of
hearing about safety.  D is a close-to-the-metal systems language.  The programmer
has to be given control.  In general I think we're going waaaay off the deep edge
trying to make D too safe lately at the expense of convenience and performance.



More information about the Digitalmars-d mailing list