В Mingw 4.7.2 у меня есть библиотека, которая не компилируется из-за вызова isnan
. Компилятор говорит, что "все будет хорошо", если я использую std::isnan
, и действительно мне удается скомпилировать свой файл.
Но если я проверю здесь (Изменить: но, возможно, я должен был проверить также здесь :-) ), std::
не кажется необходимым. Если я добавлю его, будет ли файл переносимым?
В общем, для каждого случая есть общий способ понять, когда установка std::
необходима (для переносимости), необязательна или ее следует избегать?
Изменить
Действительно, одной из причин проблемы является то, что есть несколько включений заголовков, и некоторые из включенных заголовков включают <cmath>
, в то время как этот файл cpp пытается включить <math.h>
(когда <cmath>
уже включен).
std::
. По стечению обстоятельств эта конкретная функцияisnan
поддерживается только в C++11 и вообще не существовала в C++98 (даже в заголовке C, который был заголовком C89/90, а не в заголовке C99, как в C++). 11 применений). Таким образом, вы могли бы позаимствовать его из C, но не из C, включенного в C++, а из настоящего C99 (хотя тогда это должно быть странное сочетание). - person Christian Rau   schedule 08.08.2013