Eliminate "new" for class object creation?
Leandro Lucarella
llucax at gmail.com
Tue Oct 20 06:27:11 PDT 2009
Andrei Alexandrescu, el 19 de octubre a las 22:16 me escribiste:
> dsimcha wrote:
> >== 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.
>
> No problem. You will be able to use InSitu!T. It is much better to
> confine unsafe features to libraries instead of putting them in the
> language.
>
> {
> auto foo = InSitu!(Foo)(args);
> // use foo
> ...
> // foo goes away
> }
<useless discussion>
Why not Scoped!T ? I think the purpose for this that the lifetime of the
object is bounded to the scope, right? I think is hard to figure that out
from InSitu!T than Scoped!T.
</useless discussion>
--
Leandro Lucarella (AKA luca) http://llucax.com.ar/
----------------------------------------------------------------------
GPG Key: 5F5A8D05 (F8CD F9A7 BF00 5431 4145 104C 949E BFB6 5F5A 8D05)
----------------------------------------------------------------------
- Mire, don Inodoro! Una paloma con un anillo en la pata! Debe ser
mensajera y cayó aquí!
- Y... si no es mensajera es coqueta... o casada.
-- Mendieta e Inodoro Pereyra
More information about the Digitalmars-d
mailing list