On 04/23/2013 10:16 AM, Dicebot wrote:
On Wednesday, 10 April 2013 at 07:39:25 UTC, Zach the Mystic wrote:
...
Kind of. I am thinking that scope is best when transitive for
aggregation but not for indirection:
struct S { int a; int *b; }
void foo(scope S s)
{
static int *x1 = &(s.a); // error
static int *x2 = s.b; // fine
}
(Both of these are in error because static variables are initialized at
compile time, but I get what you mean.)
Why would 'scope' have any effect on the validity of the first? s.a
belongs to the callee exclusively. Adding modular annotations to prevent
taking its address has no point.