[Bug libstdc++/54757] FAIL: ext/random/beta_distribution/cons/default.cc (test for excess errors)

dominiq at lps dot ens.fr gcc-bugzilla@gcc.gnu.org
Sun Sep 30 12:35:00 GMT 2012


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54757

Dominique d'Humieres <dominiq at lps dot ens.fr> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Target|hppa2.0w-hp-hpux11.11       |hppa2.0w-hp-hpux11.11
                   |                            |*-*-darwin*
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2012-09-30
               Host|hppa2.0w-hp-hpux11.11       |hppa2.0w-hp-hpux11.11
                   |                            |*-*-darwin*
     Ever Confirmed|0                           |1
              Build|hppa2.0w-hp-hpux11.11       |hppa2.0w-hp-hpux11.11
                   |                            |*-*-darwin*

--- Comment #4 from Dominique d'Humieres <dominiq at lps dot ens.fr> 2012-09-30 12:35:12 UTC ---
I also see it on  *-*-darwin*. I have silenced the failures by replacing
std:hypot with hypot.

I have tested the example from
http://en.cppreference.com/w/cpp/numeric/math/hypot , i.e.,

#include <cmath>
#include <utility>
#include <iostream>

std::pair<double, double> cartesian_to_polar(double x, double y)
{
    return {std::hypot(x, y), std::atan2(y,x)};
}

int main()
{
    std::pair<double, double> polar = cartesian_to_polar(1, 1);
    std::cout << "(1,1) cartesian is (" << polar.first
               << "," << polar.second<< ") polar\n";
}

which fails to compile on darwin with

[macbook] f90/bug% g++48 -std=c++11 polar.cpp
polar.cpp: In function 'std::pair<double, double> cartesian_to_polar(double,
double)':
polar.cpp:7:13: error: 'hypot' is not a member of 'std'
     return {std::hypot(x, y), std::atan2(y,x)};
             ^
polar.cpp:7:13: note: suggested alternative:
In file included from /usr/include/math.h:28:0,
                 from /opt/gcc/gcc4.8w/include/c++/4.8.0/cmath:46,
                 from polar.cpp:1:
/usr/include/architecture/i386/math.h:340:15: note:   'hypot'
 extern double hypot ( double, double );
               ^
polar.cpp:7:46: error: could not convert '{<expression error>, atan2(y, x)}'
from '<brace-enclosed initializer list>' to 'std::pair<double, double>'
     return {std::hypot(x, y), std::atan2(y,x)};
                                              ^
while it compiles if I replace " return {std::hypot(x, y), std::atan2(y,x)};"
with " return {hypot(x, y), std::atan2(y,x)}; ". Looking at
include/c++/4.8.0/cmath, I don't understand why std::atan2(y,x) is found, but
not std::hypot(x, y).



More information about the Gcc-bugs mailing list