nikita, как сказала Iron Bug, необходимо volatile переменные. Только я их в коде никогда не использовал, но предполагаю, что это должно быть атрибутом аргумента - ведь именно его не нужно оптимизировать. Шаблон не нужен - это всё имеет смысл только для вещественных чисел, а float приведётся к double:
bool isNaN(volatile double a)
{
return !(a == a);
}
Litkevich Yuriy, ну, выглядит как нагромождение знаков, но там как-то так
double a;
bool isNan=!a.operator==(a);
И! Апофигиоз: у меня НЕ работает (MinGW) - см картинку. Под cl не пробовал
Нажмите для просмотра прикрепленного файла