Where are std::sinf( float ) etc.
Howard Hinnant
hhinnant@apple.com
Thu Dec 29 19:42:00 GMT 2005
On Dec 29, 2005, at 1:52 PM, Gabriel Dos Reis wrote:
> Howard Hinnant <hhinnant@apple.com> writes:
>
> | We seem to have already merged (perhaps incompletely) some parts of
> | this very part of TR1 as if it was already standard.
>
> I'm confused as to what you're referring to: the C++0x working paper
> or the libstdc++ implementation?
Sorry for the ambiguous language.
I meant, assuming appropriate configure, that gcc 4 appears to have
the following behavior:
#include <cmath>
#include <iostream>
int main()
{
// gcc 4 compiles and executes the following line as if sin
(1.0). The C++03 standard
// says it should be ambiguous. TR1 says it should do what gcc
4 does.
std::cout << std::sin(1) << '\n';
// gcc 4 finds the following line ambiguous, in agreement with C+
+03, but in disagreement
// with TR1. This is despite the fact that gcc 4 has gone to
some effort to disambiguate
// many other calls to atan2, in disagreement with C++03, but in
agreement with TR1
std::cout << std::atan2(1.0F, 1.0) << '\n';
// gcc 4 compiles and executes the following line, in
disagreement with C++03, but in
// agreement with TR1.
std::cout << std::signbit(1.0) << '\n';
}
Is there a clear policy for libstdc++ (gcc) for what parts of TR1 get
adopted today as if they were already part of the standard? Or is it
handled on a case-by-case basis using engineering judgement?
-Howard
More information about the Libstdc++
mailing list