Address of overloaded functions

H. S. Teoh hsteoh at quickfur.ath.cx
Wed Jul 3 08:43:30 PDT 2013


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.


More information about the Digitalmars-d-learn mailing list