1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | //#include <cmath> #include <type_traits> #include <iostream> namespace detail { using std::isnan; struct dummy {}; void isnan(dummy); template <typename T> struct is_isnan_available { template <typename T1> static decltype(isnan(T1())) test(int); template <typename> static void test(...); enum { value = !std::is_void<decltype(test<T>(0))>::value }; }; } int main() { std::cout << detail::is_isnan_available<float>::value; } |
Ly8jaW5jbHVkZSA8Y21hdGg+CiNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KI2luY2x1ZGUgPGlvc3RyZWFtPgoKbmFtZXNwYWNlIGRldGFpbCB7CiAgICB1c2luZyBzdGQ6OmlzbmFuOwogICAgc3RydWN0IGR1bW15IHt9OwogICAgdm9pZCBpc25hbihkdW1teSk7CiAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgIHN0cnVjdCBpc19pc25hbl9hdmFpbGFibGUgewogICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUMT4KICAgICAgICBzdGF0aWMgZGVjbHR5cGUoaXNuYW4oVDEoKSkpIHRlc3QoaW50KTsKICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWU+CiAgICAgICAgc3RhdGljIHZvaWQgdGVzdCguLi4pOwoKICAgICAgICBlbnVtIHsgdmFsdWUgPSAhc3RkOjppc192b2lkPGRlY2x0eXBlKHRlc3Q8VD4oMCkpPjo6dmFsdWUgfTsKICAgIH07Cn0KCmludCBtYWluKCkgewogICAgc3RkOjpjb3V0IDw8IGRldGFpbDo6aXNfaXNuYW5fYXZhaWxhYmxlPGZsb2F0Pjo6dmFsdWU7Cn0K
prog.cpp:6:16: error: 'std::isnan' has not been declared
-
result: Compilation error (maybe you wish to see an example for C++11)


