Is there a good reason why this program compiles under GCC even with the -ansi
and -pedantic
flags?
#include <cmath>
int main (int argc, char *argv [])
{
double x = 0.5;
return static_cast<int>(round(x));
}
This compiles clean (no warnings, even) with g++ -ansi -pedantic -Wall test.cpp -o test
.
I see two problems:
round()
shouldn't be available to C++ in ISO-conformant mode (since it comes from C99)round()
were available in this case, it should only be so from the std
namespaceAm I wrong?
This is a bug. It's been around for a surprisingly long while. Apparently, there has not been enough of a collective desire to fix it. With a new version of C++ just around the corner which will adopt the C99 functions from math.h, it seems unlikely it will ever be fixed.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With