http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53324
--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> 2012-05-11 17:09:26 UTC --- Even if it wasn't assignable your program would crash, C++ name mangling doesn't include the return type so the symbol _ZN2XX5getmeEv defined in x.o reolves the undefined reference in y.o even though they disagree on the return type. I don't think it's possible to fix that, you just have to follow the documentation and ensure you recompile all necessary code with -D_GLIBCXX_DEBUG