dsimcha wrote:
== Quote from Andrei Alexandrescu ([email protected])'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 <[email protected]> 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