Get address of overloaded function
Kirk McDonald
kirklin.mcdonald at gmail.com
Sat Feb 24 11:59:57 PST 2007
Jarrett Billingsley wrote:
> "Frank Benoit (keinfarbton)" <benoit at tionex.removethispart.de> wrote in
> message news:erpk4o$1oom$1 at digitalmars.com...
>
>>I want to assign a function ptr to a void* variable.
>>
>>There are no compile error in case the function is a overloaded one. Is
>>this a bug?
>>
>>How to select the correct function? I tried a cast, and it seams to work.
>>
>>void fnc(){}
>>void fnc(int a ){}
>>
>>void * ptr = cast(void*)cast( void function( int )) & fnc;
>
>
> Yes, that does seem to choose the (int) overload. Although what's really
> odd is that getting the address of fnc without any cast before it gets the
> address of the overload that was defined first. Personally I think it
> should be an error, as it's ambiguous..
>
>
What we really need is a way to get a tuple of all of the function types
associated with a given symbol. Something like:
fnc.tupleof => Tuple!(void function(), void function(int))
Making the above an error without providing a mechanism like this would
adversely affect Pyd, for example.
--
Kirk McDonald
http://kirkmcdonald.blogspot.com
Pyd: Connecting D and Python
http://pyd.dsource.org
More information about the Digitalmars-d
mailing list