That makes sense though. Two things can be “not number” yet be different.
But two things cannot be “not number” and be the same.
And they should still fail == because that’s the behavior of IEEE 754 numbers.
accidentally double types the a and suddenly his program is baking flatbread
Things that are numbers:
- a pointer to a memory address
- the letter B
- the concept of being false, as opposed to being true
Things that are not numbers:
- this particular floating-point
number
Things that are numbers
…
the concept of being false, as opposed to being true
? If your’re referring to the C language convention that anything nonzero is ‘true’… false itself is exactly zero. Zero is a number. Perhaps I miss something here?
That’s what I’m saying.
Ah. OK. I re-read your comment :) Silly me.
>> typeof(NaN) <- "number"It’s valid for C too, but it will be either a double or a float.
#include <cmath> #include <iostream> #include <numbers> int main() { decltype ( NAN ) f { std::numbers::pi }; std::cout << f << std::endl; }Dude, after forcing
-std=c++20, the compiler still can’t find a reference forstd::ostream::operator<<(float)…Do I have to link with some non-standard library? There doesn’t seem to have any
numbers.aincluded with gcc.Weird, it should be standard C++20. Hope are you invoking gcc?
godbolt link: https://godbolt.org/z/6Tn4Kcjrs
Edit: be sure to call g++, not gcc.
Oh, that’s right, I was using gcc.
At least NaNs are different from each other and themselves.
SQL’s null would like a word here.





