www.digitalmars.com Home | Search | C & C++ | D | DMDScript | News Groups | index | prev | next
Archives

D Programming
D
D.gnu
digitalmars.D
digitalmars.D.bugs
digitalmars.D.dtl
digitalmars.D.dwt
digitalmars.D.announce
digitalmars.D.learn
digitalmars.D.debugger

C/C++ Programming
c++
c++.announce
c++.atl
c++.beta
c++.chat
c++.command-line
c++.dos
c++.dos.16-bits
c++.dos.32-bits
c++.idde
c++.mfc
c++.rtl
c++.stl
c++.stl.hp
c++.stl.port
c++.stl.sgi
c++.stlsoft
c++.windows
c++.windows.16-bits
c++.windows.32-bits
c++.wxwindows

digitalmars.empire
digitalmars.DMDScript

c++ - bug in dmc 8.42n

DMC allows code to get a pointer to an overloaded function without enough
context to tell which function should be used. It appears to just pick the first
one that was encountered. (This bug also exists in DMD 0.141)


example:
#include <stdio.h>

// switch these and output line 3 changes
char  fn(char c) { return c; }
int   fn(int i)  { return i; }

int main(int argc, char *argv[])
{
char(*fnc)(char) = &fn;
int(*fni)(int)   = &fn;

printf("fn(char)\t%p\n", fnc);
printf("fn(int) \t%p\n", fni);
printf("fn(?)   \t%p\n", &fn);

return 0;
}
Dec 07 2005