On Saturday, 20 December 2014 at 23:22:40 UTC, Joseph Rushton Wakeling via Digitalmars-d wrote:
On 02/11/14 15:55, IgorStepanov via Digitalmars-d wrote:
http://wiki.dlang.org/DIP66

I've applied some changes to it, however there are still some unresolved questions.

The current DIP doesn't address protection attributes. I recognize this might be somewhat orthogonal, but it'd be nice to build it into the DIP if possible, just to be explicit about what is expected for how alias this should work.

According to TDPL the following should work:

    struct Foo
    {
private T internal_; // member variable is private

public alias internal_ this; // .. but can be interacted with
                                     // via the public alias
    }

It seems to me an important factor, because it means that classes and structs can use subtyping without revealing the implementation details. As things are, you wind up having to do something like,

    struct Integer
    {
        private int i_;

        public ref int getInteger() @property
        {
            return i_;
        }

        alias getInteger this;
    }

... which personally I find a bit of an unpleasant violation of the idea of a private implementation.

See also: https://issues.dlang.org/show_bug.cgi?id=10996

I have nothing against this, but this is, indeed, completely out of the scope (!) of the DIP.

Reply via email to