[v3] Use Solaris prototypes if possible (PR libstdc++-v3/1773)
Marc Glisse
marc.glisse@inria.fr
Thu Aug 18 10:24:00 GMT 2011
On Tue, 9 Aug 2011, Rainer Orth wrote:
> This patch is the last but one in the series to finally fix
>
> PR libstdc++-v3/1773 __cplusplus defined to 1, should be 199711L
Only piece left before the switch :-)
> * include/c_global/cmath (double abs(double)): Wrap in
> !__CORRECT_ISO_CPP_MATH_H_PROTO1 &&
> !__CORRECT_ISO_CPP_MATH_H_PROTO2.
> (float abs(float), long double abs(long double): Wrap in
> !__CORRECT_ISO_CPP_MATH_H_PROTO1.
> (float acos(float), long double acos(long double)): Likewise.
[...]
I guess it would also be possible to reorder the declarations so as to
have a single #ifdef (well, two), but then the various overloads of each
function wouldn't be adjacent anymore.
> * include/tr1/cmath (float fabs(float), long double fabs(long
> double)): Wrap in !__CORRECT_ISO_CPP_MATH_H_PROTO1.
There is a comment:
// Note: we deal with fabs in a special way, because an using std::fabs
// would bring in also the overloads for complex types, which in C++0x
// mode have a different return type.
and then it proceeds to using ::fabs and declare the float and long double
overloads. Now on solaris, using ::fabs is going to be equivalent to using
std::fabs. I don't know if that creates problems for the complex types,
and in that case what can be done about it (declare fabs(double) instead
of importing the global one?).
--
Marc Glisse
More information about the Libstdc++
mailing list