blackjacksepp

joined 1 year ago
[–] blackjacksepp@feddit.de 3 points 8 months ago (2 children)

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.

[–] blackjacksepp@feddit.de 1 points 10 months ago

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.

[–] blackjacksepp@feddit.de 2 points 10 months ago

Yeah, you could express it like that

[–] blackjacksepp@feddit.de 4 points 10 months ago (2 children)

It's a C++17 feature that allows specifying a power of two (as decimal exponent) by which the fractional part should be multiplied.

[–] blackjacksepp@feddit.de 5 points 10 months ago (3 children)

From the documentation (emphasis mine):

If the floating literal begins with the character sequence 0x or 0X, 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

[–] blackjacksepp@feddit.de 19 points 1 year ago (1 children)

Isn't this how it always looked when treeview is enabled? Look for the option in the View dropdown menu.