Est isnan dans le std:: espace de noms? Plus en général, quand on est std:: nécessaire, en option ou à éviter?

Avec Mingw 4.7.2, j'ai une bibliothèque qui ne compile pas en raison d'un appel à isnan.
Le compilateur dit "tout ira bien" si j'utilise std::isnan, et en effet j'ai réussi à compiler mon fichier.

Mais si je coche ici (Edit: mais peut-être que je devrais avoir vérifié aussi ici 🙂 ), le std:: ne semble pas être nécessaire. Si je l'ajoute, le fichier de portable?

Plus en général, pour chaque cas, est-il une façon générale, à comprendre lors de la mise std:: est nécessaire (pour la portabilité), en option ou à éviter?

Modifier

En effet parmi les origines du problème, c'est qu'il y a plusieurs en-tête des inclusions, et certains en-têtes inclus comprennent <cmath>, alors que ce fichier cpp essaie de l'inclure <math.h> (quand <cmath> a déjà été inclus).

  • Ne pas vérifier, vérifier ici.
  • Donc, fondamentalement, en C++98 ce n'existait pas, et on pouvait l'avoir qu'en l'empruntant à C! C'est intéressant!
  • Non, il a toujours été la façon dont il est. Ce lien devrait simplement vous montrer qu'il y a une grande std:: devant le nom de la fonction. Par coïncidence, cette fonction particulière isnan est uniquement pris en charge avec C++11 et n'existent pas en C++98 à tous (même dans l'en-tête C, qui a été le C89/90-tête et de ne pas le C99 en-tête C++11 utilise). Ainsi, dans une manière que vous pourriez emprunter à partir de C, mais pas à partir de la C inclus avec le C++, mais à partir d'une réelle C99 (même si ça doit être un mélange étrange à l'époque).
InformationsquelleAutor Antonio | 2013-08-08