http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54686
--- Comment #8 from Oleg Endo <olegendo at gcc dot gnu.org> 2012-09-23 21:20:46 UTC --- (In reply to comment #5) > Er, abs is the exception there. signed integers have their own overloads of > abs > (in cstdlib). Seems like only unsigned integers get converted to double, which > is rather funny :-) Not sure that was intentional in the standard... Thanks god (or whoever) that the following: unsigned int test_xx (unsigned int a) { return std::abs (a); } ends up as a nop. *phew*. BTW, not so funny ;)