Time to kill T() as (sometimes) working T.init alias ?
deadalnix
deadalnix at gmail.com
Sun Dec 9 14:48:54 PST 2012
On Sunday, 9 December 2012 at 22:10:50 UTC, Jonathan M Davis
wrote:
> On Sunday, December 09, 2012 13:41:46 Jonathan M Davis wrote:
>> Declaring a struct which contains reference types and does a
>> deep copy with
>> postblit obviously incurs a performance cost, but it's up to
>> the programmer
>> who declared it to decide whether that's worth it or not. I
>> see no reason
>> for the language to try and disallow that. That's overly
>> restrictive.
>
> Not to mention, we've already discussed fixing current features
> so that they
> stop disallowing certain idioms. For instance, in order to make
> it so that
> caching and lazy loading and whatnot are not disallowed in
> classes due to
> issues with const, we've talked about removing toString,
> opEquals, toHash, and
> opCmp from Object. Then the programmer can decide whether they
> want to use
> const or not and we'd no longer be disallowing the idioms that
> are prevented
> by forcing const on Object.
>
> You're basically suggesting that we disallow any idiom which
> requires that
> structs be deep copied, and I think that that's bad policy.
> It's one thing to
> encourage programmers to not write such structs and to use
> other idioms like
> COW or reference counting. It's another thing entirely to
> disallow them. It's
> one of C++'s prime tenets to try and not force the programmer
> to program in a
> certain way or in a certain paradigm, and I think that D should
> do the same.
> If we want to encourage certain idioms and discourage others,
> fine. But
> outright disallowing them is a bad idea IMHO.
>
> - Jonathan M Davis
I can't agree more
More information about the Digitalmars-d
mailing list