Disable GC entirely

Rob T alanb at ucora.com
Thu Apr 11 09:41:02 PDT 2013


On Thursday, 11 April 2013 at 04:23:07 UTC, xenon325 wrote:
> On Wednesday, 10 April 2013 at 16:08:53 UTC, Andrei 
> Alexandrescu wrote:
>> It may as well be a mistake that nonvirtual functions are at 
>> all part of a class' methods. This has been quite painfully 
>> seen in C++ leading to surprising conclusions: 
>> http://goo.gl/dqZrr.
>
> "Non-Member Functions Improve Encapsulation" is invalid for D 
> because of implicit friends.
>
> It was discussed before: 
> http://forum.dlang.org/post/op.wbyg2ywyeav7ka@localhost.localdomain
>
> --
> Alexander

In some ways, implicit friends is the analogous to implicit 
virtual. With implied virtual you can at least state "final" for 
a reversal but with implied friends there's no way out other than 
through band-aid measures which cause headaches.

Really, the generality of the problem is analogous to the reasons 
why you do not allow implicit data typing or worse, implicit 
declarations. So in D a fundamental rule is being violated. IMO, 
everything should be explicit unless the intention can be 
calculated to be 100% certain (i.e., no possible alternatives). 
For example "auto" in D is fine, because the data typing is 
certain, but a data type of a value in a JSON struct being 
defined by the value is wrong, eg maybe the 0 (integer) was 
supposed to be 0.0 (real).

BTW, the UFCS solution to non-virtual methods creates the old C++ 
problem of constantly re-typing in the same symbol name of the 
class for every external member function. Not fun. Some syntactic 
sugar may help, perhaps clever use of template's, I don't know.

--rt


More information about the Digitalmars-d mailing list