Jerry Quinn wrote:
dsimcha Wrote:
== Quote from Andrei Alexandrescu (seewebsiteforem...@erdani.org)'s
article
Walter and I have been discussing what the regime of
statically-sized arrays should be. In short, the behavior that's
most consistent with everything else is to treat them as values.
This also brings the problems of e.g. containers - should they
have consistent value semantics (like in STL)
Oh God no! I always thought the value semantics of STL containers
were largely a kludge to work around the fact that C++ doesn't have
garbage collection. They make it easier to use RAII for memory
management, since every object has a clear owner. This leads to
tons and tons of copying if code is written the obvious way, and
lots of kludges to prevent it.
On the other hand, for relatively small objects, the last thing I
want is to have everything be a reference. This is one of the major
flaws of Java, I think, from a memory efficiency standpoint. I'd
hate to have to have references to 16 byte objects if I don't need
the sharing behavior.
Having classes with reference semantics in D largely solves this
issue, doesn't it? Use a class when you have things that make sense
to share, and use structs for when it makes more sense to have
distinct copies.
That implies all structs should have copy semantics. I'm not sure
whether this is good or bad, I'm just saying :o).
Andrei