March 21, 2019
I would like to alias this with properties in both directions such that this is not only destructured to the other value but also the other value is destructured to this.

My intention is to allow something like the following:

struct Ref(T)
{
    T* ptr;
    this(T* ptr)
    {
        this.ptr=ptr;
    }
    @property T convert()
    {
        return *ptr;
    }

    @property Ref!T convert(ref T t)
    {
        return Ref!T(&t);
    }
    alias convert this;
}


T sum(T)(SList!(Ref!T) list) if(T is Number)
{
   T sum=0;
   foreach(T elem; list)
   {
       sum+=elem;
   }
   return sum;
}
void testRef()
{
    int i=2;
    Ref!int reference=i;
    int j=reference;
}

March 21, 2019
The example presented tries to overcome the problem discovered in https://forum.dlang.org/post/xocnoxhuzoqqujwkgdtn@forum.dlang.org.