Preparing for the New DIP Process

Walter Bright newshound2 at digitalmars.com
Mon Jan 22 22:59:17 UTC 2024


On 1/21/2024 3:46 AM, Dom DiSc wrote:
> `class-private` is superfluous cruft. You can very easy live without it.
> And it has only no side effects, if it is implemented without `friend`s. But 
> without this misfeature it is incomplete.
> Therefor it was decided not to implement it.
> 
> It would be ok for me to add `class-private` as is, but only with the guarantee 
> that `friend`s will never be added, no matter how much the  people using it cry, 
> because it is sometimes unusable without them.

The irony is that the presence of class private in C++ wound up motivating the 
friends feature, which violates private left and right. D did it right with 
module level privacy, which is enforced.

C++ private isn't private, const isn't constant, and one can throw from nothrow 
functions.

D users do ask for non-constant const, impure pure, and GC allocating @nogc. You 
*can* do these things in D by using forcible casts in @system code. The salient 
difference between that and C++ is that the D compiler still assumes those 
invariants are in force, whereas C++ compilers cannot.



More information about the Digitalmars-d-announce mailing list