When you have function that gets pointer to a function as parameter, it is possible to overload it based on calling convention of parameter function. But apparently compiler generate the same signature anyway and assembler complains about redefinition.
$ g++ test.cpp /tmp/ccgIM8Ir.s: Assembler messages: /tmp/ccgIM8Ir.s:103: Error: symbol `_Z1pIvEvPFT_vE' is already defined -- Summary: GCC allows for function overloading with pointer to function as parameter based on calling convention but assembler complains Product: gcc Version: 4.4.3 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: vadim dot atlygin at gmail dot com GCC build triplet: i486-linux-gnu GCC host triplet: i486-linux-gnu GCC target triplet: i486-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44282