On Wednesday, 29 August 2012 at 21:37:33 UTC, Era Scarecrow wrote:
 struct R {
   ref int r;
   this(ref int i) {r = i;}
 }

I had totally forgotten what it says in "The book" about struct and class construction. It's basically that all fields are first initialized to either T.init or by using the field's initializer. That means the use of ref inside class or struct would be quite restricted:

int globalVal;

struct MyStruct
{
    // ref int defaultInitRef; // Illegal: reference variables
                               // can't be default initialized

    ref int explicitRef = globalVal; // Fine

    this(int val)
    {
        explicitRef = val; // Assigns val to globalVal (because
                           // explicitRef references globalVal)
    }
}

Reply via email to