Hello!
I am feeling frustrated and feel a need to rant a little bit.
<- rant -
I have a feeling that many of the flagship features added in more recent
revisions of the C++ standard are half baked in that they are missing
parts that are necessary to make them useful.
As examples of this I would like to put up
* std::ranges
Here we have an ongoing saga of adding stuff from ranges-v3 that
is missing and even a roadmap for the things that someone think
are most important to add.
Here it feels like the most reasonable course of action is to use
ranges-v3 and ignore std::ranges.
They should be compatible, no? You can use both, for when you need something missing from the standard.
* std::format
Here I tried to use it. I wanted to print a vector of unsigned
values as 1.2.3 and failed.
I then try to search the intenet for how to do it and finds
fmt::join - because obviously this is a reasonable thing to
do - but then I find that fmt::join expressly wasn't included
when range_formaater was added for some reason.
I then succumb to the other advise the internet gives:
Ignore std::format and just use fmt.
I disagree with your use of "half-baked". What we have in the standard are the parts of the features that were considered fully-baked, and ready to standardize. The ranges-v3 and {fmt} libraries have lots of experimental and unproven pieces, and not all of them are suitable for standardizations yet.
If you want to delay standardizing anything until it's all 100% complete and perfect, you'll get *nothing* in the standard. The ranges work we got in C++20 was already a big undertaking that took enormous effort from several proposal authors, and significant review time from many more people. If you want all of ranges-v3, we'd still be waiting for that to happen now.