Anonymous function syntax

Jacob Carlborg doob at me.com
Thu Sep 22 23:33:28 PDT 2011


On 2011-09-22 23:46, Walter Bright wrote:
> On 9/22/2011 1:13 PM, Jacob Carlborg wrote:
>> I function/delegate that returns a value should be implicitly
>> converted to a
>> function/delegate that returns void.
>
>
> That doesn't work in some cases - consider a function that returns an
> object that the caller must destruct. Or even just returns a struct -
> the caller passes in a hidden pointer to where the return type gets
> written.

What I'm saying is that you can ignore the returned value of a delegate 
therefore I think it should be possible implicitly convert a delegate 
returning a value, to a delegate returning void. The same for function 
pointers as well. Example:

void main ()
{
     int delegate () bar = { return 1; };
     void delegate () foo = bar;
	
     int a = bar(); // here we call "bar" and handles the return value
     bar(); // here we call "bar" and ignores the return value
     foo(); // here we call "foo", same as the line above
}

Or are you saying that it would be strange and confusing when calling a 
delegate that returns void, a struct could be destructed on the callers 
side? I can agree with that.

> Implicit conversion of function pointers and delegates requires binary
> ABI compatibility.

I'm not suggesting that a function pointer should be implicitly 
converted to a delegate, if that what is what you are saying.

-- 
/Jacob Carlborg


More information about the Digitalmars-d mailing list