These aren't 2 functions but a function and a pointer to function.
To get the intended functionality replace
void function (Handle, byte, wchar*, uint) udat_applyPattern ;
with
void udat_applyPattern (Handle, byte, wchar*, uint);
I've changed the severity from "normal" to "enhancement" as the original issue
is currently illegal D but also an interesting use case.
Comment #2 by davidl — 2007-01-04T01:34:59Z
umm , shouldn't call it an enhancement. it's more important than an enhancement
at least it's around minor level. and it breaks existing code
Comment #3 by davidl — 2007-04-09T04:31:08Z
simplified case:
extern void function (char*) udat_applyPattern ;
void udat_applyPattern(char[] wc)
{
udat_applyPattern(cast(char*)wc);
}
void main()
{
}
i think it's about the completeness of the dmd function type calling system and the completeness of type matching system.
so I remark it as normal level
Comment #4 by clugdbug — 2010-07-14T13:18:55Z
This is not a bug. There aren't two functions, just one function and a variable.
Note that if this was allowed, you could reasonably expect a struct with static opCall to work, as well. And then you ask why _any_ type or variable cannot overload a function. Add properties into the mix -- it'd be a disaster.
I think this bug should be closed as invalid.
Comment #5 by andrei — 2010-11-26T13:26:52Z
I'll leave the decision to Walter.
Comment #6 by look.at.me.pee.please — 2018-09-10T03:03:23Z