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