On Mon, Oct 8, 2018 at 6:14 PM Lyberta <lyberta@lyberta.net> wrote:
> If you do want a distinct type, why not just standardize on uint8_t? Why
> does it need to be a new type that is distinct from that, too?

Here's a small example why both "char" and "uint8_t" are horrible types
as implemented now on all major implementations:

std::uint8_t small_number = 65;
std::cout << small_number << '\n';

This will print "A" instead of 65 on all implementations I've tested it
on. This breaks templates that do text processing.

Hm? This has very little to do with text processing. Someone made a choice that ostream <<  small number yields a character.

If you want specific formatting of a value, you implement and call a value formatter function that returns a string.
Or you define a value class and define << for it.

Personally, I think
we need to add "char8_t" and also a "shortest" type so implementations
can use "unsigned shortest" to implement std::uint8_t.

That's called uint_least8_t, right? If it was smaller than 8 bits, it would be useless for UTF-8.

And I doubt that there is any platform that supports C++11 or higher and where uint8_t != uint_least8_t.