This is the mail archive of the mailing list for the glibc project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH v2] Provide a C++ version of issignaling that does not use __MATH_TG

On 08/18/2017 02:24 PM, Gabriel F. T. Gomes wrote:
> +# ifndef __cplusplus
> +#  define issignaling(x) __MATH_TG ((x), __issignaling, (x))
> +# else
> +   /* In C++ mode, __MATH_TG cannot be used, because it relies on
> +      __builtin_types_compatible_p, which is a C-only builtin.  On the
> +      other hand, overloading provides the means to distinguish between
> +      the floating-point types.  The overloading resolution will match
> +      the correct parameter (regardless of type qualifiers (i.e.: const
> +      and volatile).  */
> +extern "C++" {
> +int issignaling (float __val) { return __issignalingf (__val); }
> +int issignaling (double __val) { return __issignaling (__val); }
> +int issignaling (long double __val) { return __issignalingl (__val); }
> +int issignaling (_Float128  __val) { return __issignalingf128 (__val); }
> +#endif
> +} /* extern C++ */
> +# endif
All function definitions need an inline keyword.

The inner #ifdef needs to be indented.  There's a spurious space after


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]