“A huge gap exists between what we know is possible with today's
machines and what we have so far been able to finish.”
― Donald Knuth
This paper provides explanation on P1889 "C++ Numerics Work In Progress" and attempts to nail down scopes and priorities of P1889.
SG6 is doing a great job for many years. Right now SG6 has multiple papers with more than a 10 years history. SG6 planned to design and ship those papers as a whole (probably as a TS). P0101 "An Outline of a C++ Numbers Technical Specification" from year 2015 was attempting to put most of the papers under the single roof.
Last notes of the P0101 discussion are:
- the plan is to have a working draft at the end of the next meeting - end of this week we should report a vision and outline
P1889 puts P0101 papers together. It is a starting point for the outcome of the P0101 discussion.
However, some concerns were expressed on the reflector. That leads us to the main question:
Are we willing to start the work on a united numbers paper P1889?
Some important points to consider
My personal opinion is following:
"WG21 can come up with new ideas and numeric papers every meeting. That's a good and never ending process. That process should not block existing/preapproved papers from shipping. Starting a united Numbers paper or abandoning the TS idea will help us to progress."
We need a short name and sentence that describes the P1889, so that any reader that is unaware of the P1889 could understand it's intent.How about "Numbers" and "User friendly numeric types, aliases and low level building blocks to implement them"?
P0101 was providing the "Introduction on SG6" and "Design Principles" paragraphs. Those are a good starting points for understanding of the SG6 motivation for work that was done with the numeric papers.
For P1889 we need a clear understanding of scope and priorities. We need an understanding of "When to stop designing". Proposed scopes are:
Examples of fitting ideas:
from_charsoverloads for all the numeric types ― this is a minimal building block for string<->number conversions and without it users won't be able to output the number
Examples of non-fitting ideas:
binary-coded-decimalnumber type ― that idea was not discussed in SG6 before and it is a very exotic number representation.
binary-coded-decimaltype is not a built-in type.
std::localeto localize new types ― this is not a minimal required functionality. This could be added later.
To progress we need a schedule. Or at least a deadline to stop adding new numeric types and concentrate on consistency and functionality.
Many thanks to all the people who participate in the SG6.