On 2011-09-24 07:29:52 +0000, Andrei Alexandrescu <seewebsiteforem...@erdani.org> said:

We've had a long-standing question on whether D should cater to arbitrarily costly copy constructor. C++ and its standard library do allow such, at a great cost in complexity of the standard library and user code.

Taking a stand on this issue in D has long haunted Walter and myself. I think I have reached the point where I can argue convincingly that D should go for the following design:

1. You may not define this(this), and the object will be copied memberwise.

2. You may @disable this(this), and the object will not be copyable. The language must define under what circumstances such objects are usable. The library must define how it interacts with such objects.

3. You may define this(this), in which case the standard library is free to assume it is cheap, constant-complexity, and non-failing.

This means that objects with large state would need to use things like COW and/or reference counting.

Seems like a perfectly reasonable policy. Go ahead.


I'd go as far as requiring this(this) to be nothrow, but perhaps it would be best to see whether that is a necessity.

Perhaps I am missing the point. What would be gained by forcing this(this) to be nothrow?


--
Michel Fortin
michel.for...@michelf.com
http://michelf.com/

Reply via email to