DIP1000: Scoped Pointers

Joseph Rushton Wakeling via Digitalmars-d-announce digitalmars-d-announce at puremagic.com
Thu Aug 11 12:59:22 PDT 2016


On Wednesday, 10 August 2016 at 20:35:23 UTC, Dicebot wrote:
> - At this point the question I'd personally suggest to be 
> evaluated is "does this proposal enable enough useful 
> designs?". A good check would be to try taking some of your 
> projects and see if having DIP1000 approved and implemented 
> could improve them.

There's a use-case that relates to some of our discussions 
together in another context, about structs or classes that borrow 
data via ref:

     struct MyWrapperStruct (T)
     {
         private T* data;

         public this (ref T input)
         {
             this.data = &input;
         }

         // ... other functionality relies on
         // this.data being valid throughout
         // the lifetime of the struct

         // note, we could probably avoid everyone
         // having to use raw pointers as above if
         // we could use scope properties to create
         // a `Ref` borrowed-pointer type that would
         // complement the existing `Unique`
     }

I don't see any examples touching on this, but it would be very 
useful for implementing e.g. InputRange structs which cannot be 
copied by value, yet which need to be usable with UFCS range 
chains.

Any chance the proposal authors could add some examples of how 
scope could affect class/struct fields which borrow data by 
reference (meaning the class/struct instance should not escape 
the scope of the input data)?


More information about the Digitalmars-d-announce mailing list