C++ doesn't have zero overhead, though. The committee is unwilling to take ABI breaks and so have left performance on the table. For instance, unique_ptr<T> can't be passed in registers but T* can.
Zero overhead is a fiction the committee likes to tell themselves, but it's not true.
I don't use Blind often, but whenever I do I always feel better about my job afterwards. Yeah, there are definitely parts about my job that suck, but at least it's not that bad.
You can develop pessimism without a conscious choice, but once you become aware of how negative your outlook is, it's a conscious choice to not try to do better.
Being pessimistic about pessimism is individual-damaging and socially ruinous.
One can develop pessimism about pessimism without a conscious choice, but once you become aware of how negative your outlook on pessimism is, it's a conscious choice to not try to figure out the different meanings of that word and how important it is for the proper functioning of democracy.
Maybe read Orwell for a glimpse of mandatory optimism:
"The Ministry of Love was the really frightening one...
Winston turned round abruptly. He had set his features into the
expression of quiet optimism which it was advisable to wear when facing
the telescreen.
Compilers implement the parts of the standard they agree with, in the way they think is best. They also implement it in the way they understand the standardese.
Read a complex enough project that's meant to be used across compiler venrdos and versions, and you'll find plenty of instances where they're working around the compiler not implementing the standard.
Also, if you attended the standards committee, you would hear plenty of complaints from compiler vendors that certain things are implementable. Sometimes the committee listens and makes changes, other times they put their fingers in their ears and ignore reality.
There are also plenty of places where the standard lets the compiler make it's own decision (implementation defined behavior). You need to know what your compiler vendor(s) chose to do.
tl;dr: With a standard as complex as C++'s, the compilers very much do not just "implement the standard". Sometimes you can get away with pretending that, but others very much not.
The standard (to the extent that it is implemented) is implemented by compilers.
At this point this whole thread has nothing to do with my original point, just weird one-upping all around
Zero overhead is a fiction the committee likes to tell themselves, but it's not true.
reply