Microsoft: I'll break your correct, standard-abiding code so some broken junk we wrote almost 30 years ago works without any changes in a newer C++ standard. Here's a crappy ad-hoc flag you have to enable.
https://learn.microsoft.com/en-us/cpp/build/reference/zc-cplusplus?view=msvc-170
learn.microsoft.com
/Zc:__cplusplus (Enable updated __cplusplus macro)Learn more about: /Zc:__cplusplus (Enable updated __cplusplus macro)
You have to realize backward compatibility is embedded deeply deeply deeply in Microsoft's DNA. The (existing) customer is always right even if they technically were wrong. That's how Microsoft got to be, and stay, Microsoft.
I admire the tenacity, even as items like this come up where I would choose differently.
Dead simple counter argument: you can gate this behind \std:c++20, and all that legacy 90s code can still work. They've had 20 years and like half a dozen C++ standard revisions to fix this.
Portability heroics aside, Microsoft's success might also have had to do with some of the less glorious business practices that got them convincted by the likes of the European Union.
As to the second point, I have a paper copy of the November 2000 issue of WIRED magazine. It's a reminder of what happened.
I have another 20+ year old magazine on my shelf, for a different topic.