On Wed, Jul 03, 2013 at 05:41:25PM +0200, Artur Skawina wrote: > On 07/03/13 17:27, H. S. Teoh wrote: > > On Wed, Jul 03, 2013 at 05:15:48PM +0200, John Colvin wrote: > >> On Wednesday, 3 July 2013 at 15:03:46 UTC, Artur Skawina wrote: > >>> On 07/03/13 16:52, John Colvin wrote: > >>>> Is there any way to take the address of any of an overloaded set > >>>> of functions? > >>>> > >>>> import std.stdio; > >>>> > >>>> void foo(int a){ writeln("overload int"); } > >>>> void foo(long b){ writeln("overload long"); } > >>>> > >>>> void main() > >>>> { > >>>> auto b = &foo; //ambiguous => error > >>>> b(2); //valid for either overload > >>>> } > >>> > >>> void function(long) b = &foo; > >>> > >>> artur > >> > >> Thanks, that works > > > > This is interesting. How does C++ handle this? (Or does it?) > > The same - the context determines which overload is chosen, and > ambiguity is an error.
Oh, so it tells the difference by whether you write void (*p)(int) = foo; or void (*p)(long) = foo; ? I guess that makes sense. T -- There are 10 kinds of people in the world: those who can count in binary, and those who can't.