Dlaczego GCC zezwala na używanie round () w C ++ nawet z flagami ansi i pedantic?

Czy istnieje dobry powód, dla którego ten program kompiluje się w GCC nawet z-ansi i-pedantic flagi?

#include <cmath>

int main (int argc, char *argv [])
{
     double x = 0.5;

     return static_cast<int>(round(x));
}

To kompiluje czysto (bez ostrzeżeń, nawet)g++ -ansi -pedantic -Wall test.cpp -o test.

Widzę dwa problemy:

round() nie powinien być dostępny dla C ++ w trybie zgodnym z ISO (ponieważ pochodzi z C99)Nawet jeśliround() były dostępne w tym przypadku, tak powinno być tylko zstd przestrzeń nazw

Czy się mylę?

questionAnswers(3)

yourAnswerToTheQuestion