On Wednesday, 12 June 2013 at 19:00:28 UTC, Steven Schveighoffer wrote:
To avoid escaping pointers to your elements. This is especially important if you have total control over allocation of your elements.


Yes, that is definitively a point.

The use case:

class Container(T)
{

   struct range
   {
      size_t length;
      T* ptr;
   }
}

Which I use for all dcollections containers.

Yes, I could introduce it like this:

struct range(inout U) if(is(U == T))
{
   size_t length;
   U *ptr;
}

but it feels unnecessary. I also find the usage for this solution clumsy.


Why would you need to do it ? Why not simply do :

class Container(T) {
    struct range {
        size_t length;
        T* ptr;
    }
}

Reply via email to