On 12/11/2014 4:47 AM, Manu via Digitalmars-d wrote:
On 8 December 2014 at 07:29, Walter Bright via Digitalmars-d
<digitalmars-d@puremagic.com> wrote:
On 12/7/2014 6:12 AM, Dicebot wrote:

But from existing cases it doesn't seem working good enough. For example,
not
being able to represent idiom of `scope ref int foo(scope ref int x) {
return x;
}` seems very limiting.


   scope ref int foo(ref int x);

will do it.

Will it? It looks like foo can't be called with scope data?

Yes, it can be.


I don't have the perfect proposal, but I feel very strongly about 2 things:
1. It must not be a storage class; the concept was a disaster with
ref, and I struggle with this more frequently than any other 'feature'
in D.

I simply do not understand why distinguishing beteen ref and not-ref is a cornerstone of everything you do.


2. I feel it's a big mistake to separate it from the type system,
which I think most agree, is D's greatest asset by far. Manipulating
types is simple and convenient using the type system, and I think
manipulating scope will be just as important as any other attribute as
soon as even slightly complex use cases begin to arise.

Consider a ref counted type, RC!T. If scope were transitive, then you could not have, say, a tree where the edges were RC!T. I.e., the payload of an RC type should not be forced to be scope.

Reply via email to