Address of overloaded functions

Artur Skawina art.08.09 at gmail.com
Wed Jul 3 08:41:25 PDT 2013


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.

artur


More information about the Digitalmars-d-learn mailing list