[Bug 1617838] [NEW] std::isnan and isnan visibility problems

Steve Lorimer steve.lorimer at gmail.com
Sun Aug 28 23:15:54 UTC 2016


Public bug reported:

Consider the following small test application:

#include <iostream>
#include <cmath>
#include <math.h>

int main()
{
    double d = NAN;

    std::cout << std::isnan(d) << '\n';
    std::cout << isnan(d) << '\n';

    return 0;
}
Compiling on Ubuntu 16.04 with g++-5.4.0 using C++11 standard fails:

$ g++ -std=c++11 main.cpp
main.cpp: In function ‘int main()’:
main.cpp:10:25: error: ‘isnan’ was not declared in this scope
     std::cout << isnan(d) << '\n';
                         ^
main.cpp:10:25: note: suggested alternative:
In file included from main.cpp:3:0:
/usr/include/c++/5/cmath:641:5: note:   ‘std::isnan’
     isnan(_Tp __x)
     ^

I've compiled this on Centos gcc-4.9.1 and gcc-5.2.1 and it works on both. 
I've compiled this on Ubuntu gcc-4.9.3 and that too works.
However, compiling on Ununtu gcc-5.4.0 doesn't.

I've also tried several online compilers, with mixed results.

Wandbox has gcc-6.3.0, gcc-5.2.0, gcc-5.1.0 and they all compiled fine.
Godbolt broke for gcc-4.9.2 through gcc-5.3, but then works on 6.1.

Given it works for gcc-5.2.0 on Wandbox and breaks for gcc-5-2.0 on
Godbolt makes me thing one must be using a patched standard library.

** Affects: gcc-5 (Ubuntu)
     Importance: Undecided
         Status: New

-- 
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to gcc-5 in Ubuntu.
https://bugs.launchpad.net/bugs/1617838

Title:
  std::isnan and isnan visibility problems

Status in gcc-5 package in Ubuntu:
  New

Bug description:
  Consider the following small test application:

  #include <iostream>
  #include <cmath>
  #include <math.h>

  int main()
  {
      double d = NAN;

      std::cout << std::isnan(d) << '\n';
      std::cout << isnan(d) << '\n';

      return 0;
  }
  Compiling on Ubuntu 16.04 with g++-5.4.0 using C++11 standard fails:

  $ g++ -std=c++11 main.cpp
  main.cpp: In function ‘int main()’:
  main.cpp:10:25: error: ‘isnan’ was not declared in this scope
       std::cout << isnan(d) << '\n';
                           ^
  main.cpp:10:25: note: suggested alternative:
  In file included from main.cpp:3:0:
  /usr/include/c++/5/cmath:641:5: note:   ‘std::isnan’
       isnan(_Tp __x)
       ^

  I've compiled this on Centos gcc-4.9.1 and gcc-5.2.1 and it works on both. 
  I've compiled this on Ubuntu gcc-4.9.3 and that too works.
  However, compiling on Ununtu gcc-5.4.0 doesn't.

  I've also tried several online compilers, with mixed results.

  Wandbox has gcc-6.3.0, gcc-5.2.0, gcc-5.1.0 and they all compiled fine.
  Godbolt broke for gcc-4.9.2 through gcc-5.3, but then works on 6.1.

  Given it works for gcc-5.2.0 on Wandbox and breaks for gcc-5-2.0 on
  Godbolt makes me thing one must be using a patched standard library.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/gcc-5/+bug/1617838/+subscriptions



More information about the foundations-bugs mailing list