Hacker Newsnew | past | comments | ask | show | jobs | submit | bingo3131's commentslogin

No idea how it works in other countries but in the UK there are fixed-rate mortgages and variable-rate mortgages. Fixed rate ones are where the interest rate is locked in at the time the mortgage is taken out so any changes to the national base rate (positive or negative) do not change how much you have to repay, variable-rate mortgages are when the interest rate will fluctuate as the national base rate rises and falls.

Fixed-rate mortgages are time-limited (typically between 2-5 years) and after that you either switch to a variable rate mortgage or you take out a new fixed-rate mortgage based on the interest rates at the time.

People that bought properties just before COVID got dirt-cheap fixed-rate mortgages as the Bank of England base rate was 0.5%. Anyone sensible locked it in for 5 years which is typically the maximum available. After those 5 years were up, the base rate was about 5% which is a huge jump. I think most people have locked theirs in for 2 years now in the hopes that in a couple of years the base rate will be much lower.


I would assume it would be because the poster would find themselves in negative equity (depending on how much was left to repay on the mortgage) with all the potential pitfalls that come with it, such as if you want to borrow further money against the value of the property or if you want to sell up and move.


! is commonly used as the unary not operator, so "a != b" makes sense as a shortcut for "!(a == b)". a not equals b.


But in Lua, the unary not is written as “not”.


FYI: this is the latest draft of the proposal and it has not been voted into C++26 yet, but it is getting close.



Rumour has it (not sure if this was ever confirmed) that one of the big reasons the second Xbox was called the Xbox 360 was to avoid unfavourable number comparisons with Sony. The Xbox launched vs the PS2, which meant the "Xbox 2" would compete against the PS3. As 3 is bigger than 2, it would make the second Xbox look bad. Hence, Xbox 360. Both have a 3, no number issues. For what it's worth, Robbie Bach (former Chief Xbox Officer) is on the record as saying one of the potential names for the second Xbox was just "Xbox 3" to catch up the PS3.

While officially the meaning of the "Xbox One" name was something about it being an all-in-one entertainment system, I would put money on it being chosen as some kind of subliminal naming scheme as it sounds like "Xbox Won".


Steve Ballmer was hoping people would call it "the one". This was also around the time that SkyDrive had to be renamed to OneDrive due to trademark issues with Sky.

I always judge corporations whenever they resort to "One" as a brand because it signals a total lack of creativity and is likely the result of executives fighting each other and settling on the most mundane and inoffensive concept to represent "it does everything".


And then they painted themselves in the corner because 2x 360 is 720 and 720p was just becoming uncool when the xbone came out.


A lot of programmers refer to the compiler explorer as Godbolt due to the domain name, such as saying "Godbolt link", "try it on Godbolt", etc. They do not realise that the domain name is Godbolt.org not because "Godbolt" is the name for the compiler explorer, but that the creator/maintainer's name is... Matthew Godbolt.

I personally found out the domain was named after the creator when I saw a CppCon talk about the explorer from him!


For those who missed it: each item on the iceberg is actually a link that explains the topic in more detail.


Calling it a hint is very much over-simplifying things as there are also restrictions on what a constexpr function is and is not allowed to do, although those restrictions become fewer and fewer as time goes on as compilers are so advanced that they can emulate more system level things at compile time.

Also, constexpr on a variable is not a hint - it must be evaluated at compile time, where-as a constexpr function will be evaluated at either compile time or runtime depending on the context and arguments passed to it. For a function that you either want to work at compile time or not at all (compile error), consteval is the hardened version.

Yes, sadly this means "constexpr" variables and "consteval" functions must be calculated at compile time, while "constexpr" functions can be used both at compile time and runtime. An annoying distinction.


In D, any function can be used to evaluate at compile time. If it is used for a constant-expression and cannot be evaluated at compile time, it is a compilation error. Also, the entire function needn't be evaluatable at compile time - only the path taken through it.

Simply no need for tagging them one way or another.


Regarding new/delete elision: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p09...

You can also specify custom new/delete operations for your co-routine for control. I am not sure if you are allowed to delete them to guarantee elision either happens or the program fails to compile.

Much like lambdas and ranged-based for loops, co-routines are pretty much defined as a code transformation into lower-level C++ rather than being black magic.

Regarding the "inline" keyword being used to move a function's body into the caller: that is a compiler hint and not mandatory. The actual purpose of the "inline" function is to allow the implementation of a function to appear in multiple translation units without that causing linking issues (provided the implementation is identical).

In terms of "I’m curious if anyone actually finds something useful to do with these.": the modern C++ Windows Runtime API is built upon async operations and co-routines.


> In terms of "I’m curious if anyone actually finds something useful to do with these.": the modern C++ Windows Runtime API is built upon async operations and co-routines.

And this answers another question from the article:

> in C++ I don’t know who [coroutines] are for, or who asked for this…

And the answer is Microsoft. They already had an extension for coroutines in their compiler before the standard, the standard is not very different from their original implementation (albeit there are differences), and you can almost always see at least one @ms address in all the discussions.


My understanding is that the extension in MSVC was done specifically as a proof of concept for the standard proposal. In fact the authors also implemented it in clang as well.

This is quite common. Especially for complex proposals, the committee wants field experience or at least proof that it is implementable before standardization.


Yes, they are incredibly useful and performant in real time state machines. One of the best features of the language in certain situations.


It is undefined behaviour to modify objects declared as const (except if those objects have mutable members, in which case the mutable members can be modified).

const int a = 1;

If you try to const_cast away the const of x to change its value, you have undefined behaviour. As for pointers, if you make a const pointer to a non-const object then all it means is that you cannot modify the object via that pointer, not that the object will never be modified.

int a = 1; int b = &a; const int c = &a;

a = 2;

Both b and c are now 2 and this is absolutely fine, and the compiler won't try to optimise out any reads of *c and assume its value is still 1 as const/non-const pointer aliasing is allowed (C has the restrict keyword, it's not in C++).


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: