Eliminate "new" for class object creation?

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Mon Oct 19 20:16:23 PDT 2009


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
}

I am sorry you're sick of hearing about safety, but most everybody is 
sick of hearing about undefined behavior. I think D will have a 
landslide advantage over C++ when it will be able to define a safe subset.


Andrei



More information about the Digitalmars-d mailing list