http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58625
Bug ID: 58625 Summary: std::signbit always converts to double Product: gcc Version: 4.9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libstdc++ Assignee: unassigned at gcc dot gnu.org Reporter: olegendo at gcc dot gnu.org In file libstdc++-v4/include/c_global: constexpr bool signbit(float __x) { return __builtin_signbit(__x); } constexpr bool signbit(double __x) { return __builtin_signbit(__x); } constexpr bool signbit(long double __x) { return __builtin_signbit(__x); } I believe this is supposed to be: constexpr bool signbit(float __x) { return __builtin_signbitf(__x); } constexpr bool signbit(double __x) { return __builtin_signbit(__x); } constexpr bool signbit(long double __x) { return __builtin_signbitl(__x); } As it is right now, std::signbit always does a conversion to double.