Convert char array to number
We're missing any documentation or template constraints, but it appears that this code parses only decimal integers, and silently ignores anything after the first non-digit.  There are other departures from the interface of the functions provided in &lt;charconv&gt;:


a leading + is accepted and ignored
not all out-of-range values are detected.


Worse, there's no prevention of signed integer overflow, so there's undefined behaviour on certain inputs.
The avoidance of signed overflow is fragile and could be made clearer to the reader (with suitable static_assert() if requires isn't palatable, for instance).

I think that writing a function to multiply by 10 is taking functional decomposition a step too far.  I would say the same for subtracting '0', but that could be arguable if it were home for a comment explaining how C++ guarantees that the characters '0'..'9' are encoded as contiguous values.

There are no tests for any of the failure cases, and all the tests have to be checked externally.  It's better to make main() return an error status unless all the tests pass (and diagnostic output should go to std::clog or std::cerr as appropriate, rather than std::cout).