I dared once again getting into immutable by adding an "immutable" keyword which causes a chain of actions to be taken. I feel like I'm lost in a jungle of immutable, inout and pure (perhaps more will join the party...).

To start off, why does this not work?


        class Test
        {
                private S s;
                this(S t) { this.s = t; }
                this(immutable S t) immutable { this.s = t; }

        inout(Test) get() inout
        {
// Error: none of the overloads of __ctor are callable using a inout object, candidates are:
//onlineapp.d(10):        onlineapp.Test.this(S t)
//onlineapp.d(11):        onlineapp.Test.this(immutable(S) t)
                return new inout Test(this.s);
        }
        }

        struct S
        {
                int[] a;
        }
        void main()
        {
                immutable S s = immutable S([1,2,3]);
                auto t = new immutable Test(s);
        }

Reply via email to