Escape analysis
Michel Fortin
michel.fortin at michelf.com
Tue Oct 28 03:57:25 PDT 2008
On 2008-10-28 00:28:27 -0400, Walter Bright <newshound1 at digitalmars.com> said:
> Jason House wrote:
>> Walter Bright wrote:
>>> scope is a storage class, not a type constructor.
>>
>> How do you treat members of objects passed in? If I pass in a struct
>> with a delegate in it, is it treated as scope too? What if it's an
>> array? A class?
>
> The scope applies to the bits of the object, not what they may refer to.
So basically, we always have head-scope. Here's my question:
int** a;
void foo() {
scope int b;
scope int* c = &b;
scope int** d = &c;
a = &c; // error, c is scope, can't copy address of scope to non-scope.
a = d; // error? d is scope, but we're only making a copy of its bits.
// It's what d points to that is scope, but do we know about that?
}
In this case, it's obvious that the last assignment (a = d) is bogus.
Is there any plan in having this fail to compile? If so, where does it
fail?
--
Michel Fortin
michel.fortin at michelf.com
http://michelf.com/
More information about the Digitalmars-d
mailing list