This is the mail archive of the
glibc-bugs@sourceware.org
mailing list for the glibc project.
[Bug math/19439] Unix98 isinf and isnan functions conflict with C++11
- From: "cvs-commit at gcc dot gnu.org" <sourceware-bugzilla at sourceware dot org>
- To: glibc-bugs at sourceware dot org
- Date: Mon, 11 Jan 2016 19:15:17 +0000
- Subject: [Bug math/19439] Unix98 isinf and isnan functions conflict with C++11
- Auto-submitted: auto-generated
- References: <bug-19439-131 at http dot sourceware dot org/bugzilla/>
https://sourceware.org/bugzilla/show_bug.cgi?id=19439
--- Comment #2 from cvs-commit at gcc dot gnu.org <cvs-commit at gcc dot gnu.org> ---
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".
The branch, master has been updated
via d9b965fa56350d6eea9f7f438a0714c7ffbb183f (commit)
from c83196b0df4340209f260ffaf90e787c711c268e (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=d9b965fa56350d6eea9f7f438a0714c7ffbb183f
commit d9b965fa56350d6eea9f7f438a0714c7ffbb183f
Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Date: Mon Jan 11 13:34:52 2016 -0200
Fix isinf/isnan declaration conflict with C++11
GLIBC declares isinf and isnan as expected by Unix98 and for C99 programs
these functions are hidden by the generics inf and isnan macros.
However C++11 defines isinf and isnan with the same semantics as C99
but requires that they are functions not macros (C++11 26.8 [c.math]
paragraph 10).
This then results in a conflict for perfectly valid C++11 programs:
--
using std::isinf;
using std::isnan;
double d1 = isinf(1.0);
double d2 = isnan(1.0);
d.cc:3:12: error: âconstexpr bool std::isinf(double)â conflicts with a
previous declaration
using std::isinf;
[...]
/usr/include/bits/mathcalls.h:201:1: note: previous declaration âint
isinf(double)â
__MATHDECL_1 (int,isinf,, (_Mdouble_ __value)) __attribute__
((__const__));
[...]
--
This patch fixes the prototypes by leaving the obsolete functions
defined for C++98 code (since they do not conflict with any standard
function in C++98), however preventing them on C++11.
No issues found in libstdc++ tests and check on x86_64 and i686 with
glibc testsuite.
Patch from Jonathan Wakely <jwakely.gcc@gmail.com>.
[BZ #19439]
* math/bits/mathcalls.h
[!__cplusplus || __cplusplus < 201103L] (isinf): Do not declare
prototype.
[!__cplusplus || __cplusplus < 201103L] (isnan): Likewise.
-----------------------------------------------------------------------
Summary of changes:
ChangeLog | 9 +++++++++
math/bits/mathcalls.h | 4 ++++
2 files changed, 13 insertions(+), 0 deletions(-)
--
You are receiving this mail because:
You are on the CC list for the bug.