Time to kill T() as (sometimes) working T.init alias ?

Mehrdad wfunction at hotmail.com
Sun Dec 9 12:02:14 PST 2012


To elaborate... what's the point of making everything cheap to 
copy?

Copying of an object is _not_ an operation like swap() or "move", 
which are essential to many algorithms.

Indeed, an object might not want to be copyable at all, or it 
might need to perform some expensive operation (as in Jon's 
example) in order for the copy to behave like a copy is supposed 
to.


The only thing that the arbitrary requirement "copies are 
supposed to be cheap" would do is that it would slow down 
everything else, forcing checks on operations that shouldn't need 
to be checked. And it's completely unnecessary unless you're 
working with reference types, in which case copying is already 
cheap anyways.


So basically, algorithms should _expect_ copying of arbitrary 
objects to be expensive, and there's no need for them to be 
otherwise. C++'s swap() illustrates the lack of the need for 
copying beautifully -- often times the only objects I copy 
"generically" in C++ are iterators. I never find the need to copy 
other objects... and I believe D has no such need, either.


More information about the Digitalmars-d mailing list