There is decimal scientific notation for specifying a decimal exponent already (123e4 = 123×10^4
).
And I don't know why the committee preferred base 2 over base 16, I think it really depends on the use case which one is more useful.
There is decimal scientific notation for specifying a decimal exponent already (123e4 = 123×10^4
).
And I don't know why the committee preferred base 2 over base 16, I think it really depends on the use case which one is more useful.
Yeah, you could express it like that
It's a C++17 feature that allows specifying a power of two (as decimal exponent) by which the fractional part should be multiplied.
From the documentation (emphasis mine):
If the floating literal begins with the character sequence
0x
or0X
, the floating literal is a hexadecimal floating literal. Otherwise, it is a decimal floating literal.For a hexadecimal floating literal, the significand is interpreted as a hexadecimal rational number, and the digit-sequence of the exponent is interpreted as the (decimal) integer power of 2 by which the significand has to be scaled.
double d = 0x1.4p3; // hex fraction 1.4 (decimal 1.25) scaled by 2^3, that is 10.0
You can find the full documentation here: cppreference.com
So in your example 0x1P1
means 1~16~ * 2^(1~10~) = 2
Isn't this how it always looked when treeview is enabled? Look for the option in the View
dropdown menu.
I never used C++'s scoped locks but as far as I can tell they perform runtime deadlock detection while this crate is compile-time only with near to none code produced in the resulting binary.
This is done by enforcing to either lock every Mutex the thread needs at once or none at all. Thread keys are used to represent this with the type system.