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