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