Steven Schveighoffer Wrote:

> 
> This might be a difficult thing to fix, but it definitely *definitely*  
> needs to be fixed.  The problem is that a delegate stores a function  
> pointer and a context pointer.  However, it does not type the context  
> pointer.  For example, if you do this:
> 
> import std.stdio;
> 
> class A
> {
>      void f() const {}
> }
> 
> void main()
> {
>      const A a = new A;
>      a.f();
>      auto g = &a.f;
>      writefln("%s", typeof(g).stringof);
> }
> 
> You will get this:
> 
> void delegate()
> 
> The this pointer is hidden, and so is it's const decoration.  I would  
> expect to see:
> 
> void delegate() const
> 
> I'll file a bugzilla request for this.
> 
> -Steve


I disagree. Once the delegate is passed off to some other region of code, why 
should that other code care that there's an object that might not get modified 
from using the delegate? Especially when you consider that which object or 
stack frame is not tracked by the type system. Pure delegates make sense to me 
though.

Reply via email to