2012/9/18 Paolo Carlini <paolo.carl...@oracle.com>:

> I don't understand: what's wrong - exactly - with the std::tr1::pow (double, 
> double) overload above? Now I can't immediately check, but do the EDG and 
> CLANG front ends accept it or not?

They don't. The problem is that it conflicts with ::pow(double,double).

// in GLIBC math.h
extern double pow (double __x, double __y) throw (); // (1)

// in std::tr1::cmath
namespace std { namespace tr1 {
inline double
pow(double __x, double __y)
{ return std::pow(__x, __y); }
}}

// in std::tr1::math.h
using std::tr1::pow; // this one conflicts with (1)

The removal of std::tr1::pow is surely wrong, on second though, I
think we should perhaps do:
namespace std { namespace tr1 { using std::pow; }}

But I see the comment below in std::tr1::math.h...

// DR 550. What should the return type of pow(float,int) be?
  // NB: C++0x and TR1 != C++03.
  //   using std::pow;

What do you think ?

Reply via email to