[Issue 6714] [tdpl] Function literal does not convert to "function" and "delegate" types
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Sat Dec 24 04:23:37 PST 2011
http://d.puremagic.com/issues/show_bug.cgi?id=6714
Don <clugdbug at yahoo.com.au> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |clugdbug at yahoo.com.au
--- Comment #2 from Don <clugdbug at yahoo.com.au> 2011-12-24 04:23:32 PST ---
(In reply to comment #0)
> Consider:
>
>
> void foo (int function (int, int) a){}
> void bar (int delegate (int, int) a){}
>
> void main ()
> {
> foo((a, b) { return a +b;});
> bar((a, b) { return a +b;});
> }
>
> Neither call works. The literal does not convert to the function or the
> delegate type.
This works though:
bar((int a, int b) { return a + b;});
Is that what you meant? If it is, then this is a duplicate of 3235.
Or are argument types supposed to be deduced? If so, that's a major,
complicated feature and difficult to implement, I think it requires an extra
level of argument matching. It would need to be considered very carefully.
Eg, which of these calls are ambiguous?
void bar ( double delegate(int, int) a ) {}
void bar ( int delegate (int, int) a ){}
bar( (a, b) { return 1.0; } );
bar( (a, b) { return 1.0f; } );
bar( (a, b) { return a; } );
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
More information about the Digitalmars-d-bugs
mailing list