DIP 1021--Argument Ownership and Function Calls--Community Review Round 1

Walter Bright newshound2 at digitalmars.com
Wed Jul 31 07:09:09 UTC 2019

On 7/21/2019 5:05 PM, Mike Franklin wrote:
> void main() @safe
> {
>      S s;
>      for(int i = 0; i < 100; i++)
>          doSomething(s.foo(), s.bar());
> }
> I still don't see how the compiler can know statically whether or not `foo()` 
> and `bar()` will return a reference to the same data.

Because they're both returning a reference to `s`. The compiler already checks 
this with dip25 and dip1000. This DIP just extends this to more checking.

> It appears a full ownership/borrowing system would make what this DIP is 
> proposing obsolete, and is the only way to properly do what this DIP is proposing.

A full OB requires the @live sections. This DIP makes it partially available in 
@safe sections, enough so containers can control access to their components.

More information about the Digitalmars-d mailing list