A proper WAT moment
    Jacob Carlborg 
    doob at me.com
       
    Wed Oct 16 18:36:36 UTC 2019
    
    
  
On 2019-10-15 09:06, John Colvin wrote:
> And all the other ones in my example that access members without an 
> instance that also compile?
> 
> There's something pretty strange about the rules here.
The thing is that it should be possible to access a non-static member 
without an instance because it's possible to manually construct a delegate:
class S
{
     int a;
     int e() @property { return a; }
}
void foo()
{
     int function() f = &S.e; // this compiles
     int delegate() dg;
     S s;
     dg.ptr = &s;
     dg.funcptr = f;
}
struct C
{
     void bar()
     {
         int function() f = &S.e; // this fails for some reason but 
should compile
     }
}
So the expression `S.e` should compile, because it can be part of a 
large expression, i.e. `&S.e`, which should compile.
The strange thing is that it fails to compile inside `C`. But if `bar` 
is changed to a static method it compiles again.
-- 
/Jacob Carlborg
    
    
More information about the Digitalmars-d-learn
mailing list