Time to kill T() as (sometimes) working T.init alias ?
Walter Bright
newshound2 at digitalmars.com
Mon Dec 3 14:34:06 PST 2012
On 12/1/2012 3:43 PM, Jonathan M Davis wrote:
> Any struct which contains reference types needs them. For instance, a struct
> containing int[] needs to dup that array if it doesn't want to have the copy
> referring to the same elements as the original and therefore risk having them
> be mutated. Arrays with immutable elements don't have that problem, but those
> with mutable elements (and to some extent those with const) do have such a
> problem, as to structs with classes or structs which are reference types, etc.
> I'm surprised that you'd think that postblit constructors were only useful for
> implementing reference counting types. IMHO, the language would be crippled
> without a postblit or copy constructor for structs.
On the other hand, I'd say you have a pretty expensive design if it
required you to allocate memory in order to do a copy. Making copies
ought to be a cheap operation.
It's not hard to implement copy-on-write for the referenced data. In
fact, with reference counting, you shouldn't need to make those dups.
More information about the Digitalmars-d
mailing list