#include <type_traits>

template<typename T>
typename std::enable_if<std::is_floating_point<T>::value, bool>::type isnan(T const val)
{
    T volatile const temp = val;
    return temp != val;
}

#include <cmath>
#include <iostream>

int main()
{
        std::cout << isnan(NAN);
}