[Mesa-dev] [PATCH v3] math: Import isinf and others to global namespace

Jose Fonseca jfonseca at vmware.com
Mon Apr 18 10:21:35 UTC 2016


Thanks. I've tweak the version check logic and pushed.

Jose

On 14/04/16 19:43, Pierre Moreau wrote:
> Starting from C++11, several math functions, like isinf, moved into the std
> namespace. Since cmath undefines those functions before redefining them inside
> the namespace, and glibc 2.23 defines the C variants as macros, the C variants
> in global namespace are not accessible any longer.
>
> v2: Move the fix outside of Nouveau, as suggested by Jose Fonseca, since anyone
>      might need it when GCC switches to C++14 by default with GCC 6.0.
>
> v3:
> *   Put the code directly inside c99_math.h rather than creating a new header
>      file, as asked by Jose Fonseca;
> *   Guard the code behind glibc version checks, as only glibc > =2.23 defines
>      isinf & co. as functions, as suggested by Jose Fonseca.
>
> Signed-off-by: Pierre Moreau <pierre.morrow at free.fr>
> ---
>   include/c99_math.h | 23 +++++++++++++++++++++++
>   1 file changed, 23 insertions(+)
>
> diff --git a/include/c99_math.h b/include/c99_math.h
> index 250e08d..192ff13 100644
> --- a/include/c99_math.h
> +++ b/include/c99_math.h
> @@ -185,4 +185,27 @@ fpclassify(double x)
>   #endif
>
>
> +/* Since C++11, the following functions are part of the std namespace. Their C
> + * counteparts should still exist in the global namespace, however cmath
> + * undefines those functions, which in glibc 2.23, are defined as macros rather
> + * than functions as in glibc 2.22.
> + */
> +#if __cplusplus >= 201103L && __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 23
> +#include <cmath>
> +
> +using std::fpclassify;
> +using std::isfinite;
> +using std::isinf;
> +using std::isnan;
> +using std::isnormal;
> +using std::signbit;
> +using std::isgreater;
> +using std::isgreaterequal;
> +using std::isless;
> +using std::islessequal;
> +using std::islessgreater;
> +using std::isunordered;
> +#endif
> +
> +
>   #endif /* #define _C99_MATH_H_ */
>



More information about the mesa-dev mailing list