On Mon, 21 Apr 2014 11:02:14 -0400, Andrei Alexandrescu <[email protected]> wrote:

On 4/21/14, 1:49 AM, Lars T. Kyllingstad wrote:
On Sunday, 20 April 2014 at 20:36:58 UTC, Andrei Alexandrescu wrote:
On 4/20/14, 12:11 AM, Lars T. Kyllingstad wrote:
The fact that "private" really means "module private" in D means that
any number of functions can break when a class/struct implementation
changes.

No, only those in that module. There's no change. -- Andrei

Ok, so "any number" was poorly phrased.  What I meant was "a large
number", because in my experience, modules tend to be quite large.

The point here is boundedness, i.e. whether stuff that's affected is within your control or not. The module you're working on is trivially "yours". Changes visible outside the module are "unbounded" because they affect present and future client code.

I often wish "private" meant class private in D.

I think we're in good shape here.

Sure, but Lars' point that it completely precludes the encapsulation mechanism that Scott is advocating, is true. You would have to put the functions outside the core module to give them the same isolation as non-friend C++ global functions.

Note, I'm with you that the current mechanism is the "right way." It just completely prevents that technique of encapsulation :)

-Steve

Reply via email to