How to assert a function signature in D2.008?

Craig Black cblack at ara.com
Wed Dec 5 09:51:43 PST 2007


"Sean Kelly" <sean at f4.ca> wrote in message 
news:fj4e63$1jaa$1 at digitalmars.com...
> Walter Bright wrote:
>> Janice Caron wrote:
>>> This used to compile under D2.007
>>>
>>>     struct A
>>>     {
>>>         void f() {}
>>>
>>>         static assert(is(typeof(f)==void function()));
>>>     }
>>>
>>> It doesn't under D2.008. The only way I've found to make it compile
>>> under D2.008 is to change it to
>>
>> Change it to:
>>
>> is(typeof(&f)==void function())
>
> I guess the reason that this matches "void function" rather than "void 
> delegate" is to avoid the need for handling each separately?
>
>
> Sean

To me this is confusing because you are taking the address of an instance 
function without specifying the context pointer.  It doesn't result in a 
delegate but it shouldn't result in a function either.  Maybe there should 
be another type for "delegate without context pointer".

-Craig 





More information about the Digitalmars-d mailing list