Por que o GCC permite o uso de round () em C ++, mesmo com as bandeiras ansi e pedantic?

Existe uma boa razão pela qual este programa compila sob o GCC, mesmo com o-ansi e-pedantic bandeiras?

#include <cmath>

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

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

Isso compila limpo (sem avisos, mesmo) comg++ -ansi -pedantic -Wall test.cpp -o test.

Eu vejo dois problemas:

round() não deve estar disponível para o C ++ em modo compatível com ISO (já que ele vem do C99)Mesmo seround() estavam disponíveis neste caso, só deveria ser a partir dostd namespace

Estou errado?

questionAnswers(3)

yourAnswerToTheQuestion